繁体   English   中英

Java Do While Statement有两个条件

[英]Java Do While Statement with two conditions

我正在尝试学习java,但我一直试图做一个关于Do While Statement的单个程序,有两个条件。 具体来说,我想要一个方法运行,直到用户写“是”或“否”。 那么,有我的东西,它有什么问题?

    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');
    }
}}

我会做一些类似蒂姆的回答。 但是,按照你试图做的方式做事,你有很多需要修复的问题:

(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 while ! (blah-blah-blah)”。

我可能会选择一个do循环,它将继续接受命令行用户输入,直到他输入“是”或“否”答案,此时循环中断。

do {
    answerString = user_input.next();

    if ("yes".equalsIgnoreCase(answerString)) {
        System.out.println("You want a cookie.");
        break;
    } else if ("no".equalsIgnoreCase(answerString)) {
        System.out.println("You don't want a cookie.");
        break;
    } else {
        System.out.println("Answer by saying 'yes' or 'no'");
    }
} while(true);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM