我该如何验证这个java代码?

时间:2014-12-10 23:21:55

标签: java

System.out.print("Enter operation to perform (+ OR - OR * OR /):");
        operator= userInput.next();

我想如果输入+, - ,*或/,它接受该值,如果输入其他内容,则重复该问题。在进入四个操作符之一之前,它会一直循环。

我试过了:

while (!operator.equals("-") ||operator.equals("+") || operator.equals("*") || operator.equals("/") )
    {
        System.out.print("Enter operation to perform (+ OR - OR * OR /):");
        userInput.next();
    }
    operator = userInput.next();

但它不起作用。有什么建议?感谢

1 个答案:

答案 0 :(得分:0)

您试图否定整个条件,但!运算符仅对其附加的第一个操作数进行操作,因为! has a higher precedence||(和&&)。

您可以添加澄清括号,以指示需要否定整个表达式。

while ( !(operator.equals("-") || operator.equals("+") ||
          operator.equals("*") || operator.equals("/") ) )

作为替代方案,你也可以否定每个单独的支票,小心切换到“和”操作符(不是“ - ”而不是“+”和......)

while (!operator.equals("-") && !operator.equals("+") &&
       !operator.equals("*") && !operator.equals("/") )

此外,在while循环内,将next()的结果分配给运算符,以便您可以再次检查它,就像在代码顶部所做的那样。

    operator = userInput.next();

此外,您可能希望将nextDouble()的来电回复分配给operator以外的其他变量(String)。