2014-12-10 72 views
0
System.out.print("Enter operation to perform (+ OR - OR * OR /):"); 
     operator= userInput.next(); 

我希望如果輸入+, - ,*或/,它接受該值,如果輸入了其他內容,則重複該問題。在進入四個操作員之一之前,它保持循環。我將如何驗證此Java代碼?

我曾嘗試:

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

'operator'是一個String還是'double'?如果它是'String',你爲什麼要用'nextDouble()'分配它? – azurefrog 2014-12-10 23:23:22

回答

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)。

+0

我已更新代碼以使用第一個選項。 System.out.print(「輸入要執行的操作(+ OR - 或* OR /):」); \t \t operator = userInput.next(); \t \t while(!(operator.equals(「 - 」)|| operator.equals(「+」)|| operator.equals(「*」)|| operator.equals(「/」))) \t System.out.print(「輸入要執行的操作(+ OR - 或* OR /):」); \t \t userInput.next(); \t \t} – Adam 2014-12-10 23:35:06

+0

但是,發生這種情況: 請輸入第一數目:66 輸入操作來執行(+或 - OR * OR /):d 輸入操作來執行(+或 - OR * OR /):+ 輸入操作以執行(+ OR - 或* OR /): – Adam 2014-12-10 23:36:07

+0

您不會將下一個輸入分配給'operator'。正如我在上面的回答中所述,在'while'循環中,將調用的結果分配給'next()'到'operator'。 – rgettman 2014-12-10 23:37:26