当前位置: 首页 > 知识库问答 >
问题:

在参数化构造函数Java中抛出IllegalArgumentExcture

蓝星辰
2023-03-14

这是我的代码:

public StyleRay(Point endpoint, int direction, String style)
{
    if(endpoint == null || style == null)
        throw new IllegalArgumentException("A point or string cannot be null");
    else if(direction < 0 || direction > 359)
        throw new IllegalArgumentException("The direction needs to be between 0 and 360");
    else if(style != "dotted" || style != "dashed" || style != "double")
        throw new IllegalArgumentException("The style needs to be double, dashed, or dotted");
    else
    {
        this.endpoint = new Point(endpoint);
        this.direction = direction;
        this.style = new String(style);
    }
}

以下是我的任务要求:

一个参数化构造函数,将接收endpoint(作为点)、方向(作为int)和样式(作为字符串)。如果接收到的点或字符串为空,则抛出新的IllegalArgumentException(

我知道我检查样式是虚线、虚线还是双精度的部分出了问题,因为当我把它注释出来时,除了那个部分,所有的东西都工作了。就现在的情况而言,它只是在所有事情上抛出了非法的辩论例外。

我有一种感觉,这是一个非常简单的修复,我只是做了一些不正确的事情,但我是一个初学者,不知道我应该尝试下一步。

我最初试着,

else if(style.equals("dotted") == false) || etc, etc, etc)

但这也不管用。

任何帮助都很感激。

共有1个答案

席兴朝
2023-03-14

试试这个:

if (!style.equals("dotted") && !style.equals("dashed") && !style.equals("double"))        
    throw new IllegalArgumentException("The style needs to be double, dashed, or dotted"); 
 类似资料:
  • 我在创建对象和参数化构造函数时遇到以下错误。 Main.java: 6:错误:构造函数Cipher类中的Cipher不能应用于给定类型 必需:无参数 找到:int 原因:实际参数列表和正式参数列表的长度不同 这是我的文件的样子

  • 我正在将应用程序迁移到最新的spring boot版本(使用gradle spring boot dependencies和2.5.4版)。 我有一个名为的实体,它用注释;以及另一个实体,用注释。Customer类有

  • 当异常在构造函数中被抛出时,其中创建了多个对象,必须做些什么来清理内存。例如。 我的直觉是,将每个对new的调用放在一个单独的try-catch组中,并删除之前为其调用了,但这太冗长的所有对象(第一个try组不调用析构函数,第二个类调用第一个类的析构函数,第三个类调用前两个类的析构函数,以此类推)。我的问题是:最常见的处理方法是什么? 另外,假设类对象包含一个不是用new创建的对象(因为它在堆栈上

  • 问题内容: 我是Java的初学者,我想以一种简单的方式知道为什么您应该使用参数化构造函数而不是编译器提供的默认构造函数。 谢谢 问题答案: 默认构造函数将您的对象可能具有的所有属性设置为0,false等。如果要立即设置属性,则可以使用参数化的构造函数。当然,也可以使用您自己的构造函数为您提供在创建对象之前(技术上而言)执行代码的选项。 顺便说一句:“默认值不会为属性设置任何值”的答案是错误的。例如

  • 我想有一个java中的构造函数参数化一个类来运行这个类,类似于这个 其中classToRun可能的类没有共同的祖先,但都有方法someStaticMethod。 但也存在一些问题,比如内部类不能有静态方法,类不能被转换为类,等等。 有一些用类方法参数化的解决方案,如 如何在Java中传递类作为参数? 在java中将类作为参数传递给方法 但对建造者来说不是。 这样做的正确解决方案是什么?

  • 实际上,我不明白无参数构造函数和默认构造函数的区别是什么。 在创建名为cFrame的Test对象时,是否调用此类的默认构造函数?