Java Do While Statement有两个条件

时间:2015-11-03 04:12:58

标签: java do-while invalid-characters

我正在尝试学习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');
    }
}}

2 个答案:

答案 0 :(得分:4)

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

(1)Java中的字符串文字用双引号括起来,而不是单引号。

(2)user_inputScanner。您无法将扫描仪与字符串进行比较。您只能将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与代码的其余部分保持一致。] !在这里的意思是“不”,并注意我必须在整个表达式之后将整个表达式放在括号中!,否则!仅适用于表达式的第一部分。如果你正在尝试编写一个“循环直到等等等”的循环,你必须把它写成“循环while !(blah-blah-blah)”。

答案 1 :(得分:2)

我可能选择do循环,它将继续接受命令行用户输入,直到他输入" yes"或"不"回答,此时循环中断。

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