2017-06-22 183 views
-5

无法跳出while循环。我的代码有什么问题? 一切看起来正确的逻辑我:Java - 无法跳出循环

虽然(而不是 's' 或不是 'P') ---打印线: “重新” --- ReadInput:

while (!answerInput.equals("s") || !answerInput.equals("p")) 
{ 
    System.out.print("Wrong Input. Type S for Sum or P for Product: "); 
    answerInput = userInput.next(); 
    answerInput = answerInput.toLowerCase();  
} 

请指教。

+0

如果你会说*当(不是 's' 或 'P')*你的错误是可以理解的。但是,如何(而不是'或'不'')有什么意义? – shmosel

回答

4

用简单的英语,你的代码是说:

如果“answerInput”比“S”以外的东西,“answerInput”比“P”以外的东西,这种表达是真实的。

该声明永远不会是错误的。这显然不是'不'或'不';它不能同时是两个值。两个不平等中的一个永远是真实的,因此整个表达也总是如此。

什么,你应该说的是:

如果“answerInput”比“S”以外的东西,“answerInput”也比“P”以外的东西,这种表达是真实的。

其中,在Java中,被表述为:

while (!answerInput.equals("s") && !answerInput.equals("p")) 
+1

谢谢Govind。看起来我的逻辑不是一切都很好。必须绘制所有可能的真/假组合来查看我错在哪里。我希望它现在会粘在我的头上。 –