在Parameterized Constructor Java中抛出IllegalArgumentException

时间:2018-02-07 04:34:47

标签: java class constructor

这是我的代码:

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);
    }
}

以下是我的任务要求:

  

将接收端点(作为Point)和方向(作为int)的参数化构造函数   和样式(作为字符串)。如果收到的Point或收到的String为null,则   抛出新的IllegalArgumentException(&lt;“你的描述性字符串在这里”&gt;);   如果方向不在0到359(含)之间,那么   抛出新的IllegalArgumentException(&lt;“你的描述性字符串在这里”&gt;);   此外,如果收到的样式不等于“double”或“dashed”或“dotted”,那么   抛出新的IllegalArgumentException(&lt;“你的描述性字符串在这里”&gt;);   如果方向和样式都正常,则将数据初始化为Point,int和String   接收。在这种情况下,请确保使用深拷贝。

我知道我检查样式是虚线,虚线还是双重的部分有问题,因为当我评论它时,除了该部分外,一切都有效。现在它只是抛出IllegalArgumentExceptions。

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

我最初尝试过,

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

但这也不起作用。

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

试试这个:

if (!style.equals("dotted") && !style.equals("dashed") && !style.equals("double"))        
    throw new IllegalArgumentException("The style needs to be double, dashed, or dotted");