困扰扫描条件

时间:2014-06-26 23:49:13

标签: java conditional

我正在编写调查问卷,在某个部分之后,该程序会询问"这是完整的吗?"这应该是是或否答案。所以我编写了这些条件,但我得到了一个"不兼容的类型"错误信息。

System.out.println("Is that complete?");
String answer = sc.nextLine();
if(answer="no")
{
    System.out.println("Continue:");
    Continued = sc.nextLine();
    if(answer="yes")
    {
        System.out.println("Okay.");
        if(answer != "yes" || "no")
        System.out.println("That is not a valid input.");
        isThatComplete();
    }
}

谢谢!

2 个答案:

答案 0 :(得分:0)

if (answer != "yes" || "no")

||运算符使用布尔运算符,但是您提供了布尔值和字符串,因为它被解析为

(answer != "yes") || "no")

编写它的正确方法是

if (!answer.equals("yes") && !answer.equals("no"))

或者,根据De Morgan法律:

if (!(answer.equals("yes") || answer.equals("no"))

请注意,我使用了equals(..)而不是==,因为不应该使用==来检查对象之间的相等性,{{1}}只检查引用。

答案 1 :(得分:0)

以下行不正确。当你给它一个字符串时,它期待布尔值。

if(answer="no")

你应该使用==而不是=。无论如何,更好的方法是:

if("no".equals(answer))

如果检查,尝试相同的事情。

顺便说一下 - 你的代码看起来很糟糕。我不确定你在这里要做什么:if(answer != "yes" || "no")