具有两个条件的 Java Do While 语句

标签 java do-while invalid-characters

我正在尝试学习 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) 我认为您试图编写一个循环,如果输入不是 yesno,该循环将继续运行。相反,您做了相反的事情:您编写了一个循环,只要输入 yesno 就一直运行。您的 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/

相关文章:

c++ - Qt从子方法更新文本框

batch-file - 除非线路单独运行,否则开关无效

python - 在 Python 中检查有效的 utf8 字符串

java - 在这段代码中,我将如何以及在哪里为我的 Needle 和 haystacks 变量获取用户输入

java - Logback 占位符不适用于测试

Java SE do while 循环问题

java - 如何修复此单人骰子游戏(4 - 4 面骰子)的循环?扫描仪输入无法产生正确输出的问题

java - 在 Weblogic 12c 上部署 Spring Boot REST 服务

java - Spring 3 在所有模型属性上错误地绑定(bind)请求数据

xslt - xsl 试图输出 '<' 而不是 '&lt;'