我希望只要用户在忽略大小写时输入“停止”或“继续”以外的值,就会执行while循环。我怎样才能做到这一点?每当我运行程序时,即使我输入继续或停止,它也会输出“无效条目”。我究竟做错了什么?
package butt;
import java.util.*; // used for console input
public class butt_face{
static Scanner console = new Scanner(System.in); // needed for user input
public static void main(String[] args) {
String strContinue; // input from console and used for boolean
System.out.println("Would you like to stop or continue? ");
strContinue = console.next();
while(!(strContinue.equalsIgnoreCase("stop")) || !(strContinue.equalsIgnoreCase("continue")))
{
System.out.println("Invalid entry");
System.out.println("Would you like to stop or continue? ");
strContinue = console.next();
} // end while
if(strContinue.equalsIgnoreCase("stop")
{
System.out.println("Good bye!");
} // end if
else
System.out.println("Poop Ship Destroyer");
} // end of main
} // end of class
答案 0 :(得分:7)
您的操作符错误:
!(strContinue.equalsIgnoreCase("stop"))
除非true
为strContinue
,否则为"stop"
。
!(strContinue.equalsIgnoreCase("continue"))
除非true
为strContinue
,否则为"continue"
。
strContinue
不能同时为"stop"
和"continue"
,因此至少有一个条件始终为true
,而false || true
为true
}。
解决方案:将或(||
)更改为和(&&
)。
答案 1 :(得分:1)
您需要更换&&在条件而不是|| 检查repl https://repl.it/B6GJ/0
答案 2 :(得分:0)
问题在于你的逻辑。
while(!(strContinue.equalsIgnoreCase("stop")) || ! (strContinue.equalsIgnoreCase("continue")))
此部分检查strContinue是否等于stop,如果等于stop,则检查strContinue是否等于continue。
答案 3 :(得分:-5)
在输入这两个字符串之一之前,执行类似于调用输入扫描程序的输入函数。