我正在尝试学习 java,但我一直在尝试做一个涉及 Do While 语句和两个条件的程序。具体来说,我想要一种方法一直运行到用户输入"is"或“否”为止。好吧,下面是我的东西,它有什么问题吗?
String answerString;
Scanner user_input = new Scanner(System.in);
System.out.println("Do you want a cookie? ");
do{
answerString = user_input.next();
if(answerString.equalsIgnoreCase("yes")){
System.out.println("You want a cookie.");
}else if(answerString.equalsIgnoreCase("no")){
System.out.println("You don't want a cookie.");
}else{
System.out.println("Answer by saying 'yes' or 'no'");
}while(user_input == 'yes' || user_input == 'no');
}
}}
最佳答案
我会做类似于 Tim 的回答的事情。但是按照您尝试做的方式做事,您有很多问题需要解决:
(1) Java 中的字符串文字用双引号括起来,而不是单引号。
(2) user_input
是一个Scanner
。您不能将扫描仪与字符串进行比较。您只能将一个 String
与另一个 String
进行比较。因此,您应该在比较中使用 answerString
,而不是 user_input
。
(3) 永远不要使用==
来比较字符串。 StackOverflow 有 953,235 个 Java 问题,其中大约 826,102 个涉及尝试使用 ==
比较字符串的人。 (好吧,这有点夸张。)使用 equals
方法:string1.equals(string2)
。
(4) 当你写一个do-while
循环时,语法是do
,后面是{
,后面是代码循环,然后是 ,然后是
while(condition);
。看起来你把最后一个 }
放在了错误的地方。 while
之前的 属于
else
,因此不算数;在 while
之前,您需要另一个 }
,而不是在它之后。
(5) 我认为您试图编写一个循环,如果输入不是 yes
或 no
,该循环将继续运行。相反,您做了相反的事情:您编写了一个循环,只要输入是 yes
或no
就一直运行。您的 while
条件应该类似于
while (!(answerString.equals("yes") || answerString.equals("no")));
[实际上,它应该是 equalsIgnoreCase
以与其余代码保持一致。] !
在这里表示“不”,请注意我必须将!
后括号中的整个表达式,否则 !
将仅应用于表达式的第一部分。如果你想写一个循环,执行“Loop until blah-blah-blah”,你必须把它写成“Loop while
!
(blah-blah-等等)”。
关于具有两个条件的 Java Do While 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33491270/