我编写了以下方法,在另一个调用此方法的方法中,boolean-return类型再次分配给另一个布尔值。
private boolean answer() {
Scanner input = new Scanner(System.in);
boolean b = false;
String answer = input.nextLine();
while(answer != "y" || answer != "n") {
System.out.println("Answer with y (yes) or n (no)");
answer = input.nextLine();
}
if (answer == "y") {
b = true;
}
return b;
}
但无论我输入什么(y,n或任何其他字母),我总是会再次进入while循环。
答案 0 :(得分:1)
这是因为您的考试中有or
而不是and
。
正如它目前编码的那样,你说:
虽然答案不是“y”或,但它不是“n”,循环。
总是如此。
你想要的是:
虽然答案不是“y”且,但它不是“n”,循环。
编码为:
while (answer != "y" && answer != "n") (
答案 1 :(得分:1)
更改为:MKMapSize
,您的代码将按预期运行。
答案 2 :(得分:1)
我怀疑你的问题在于: while(answer!=“y”|| answer!=“n”)
当你的答案=“y”时,它不是=“n”,所以循环继续,反之亦然。
可能你想要这个: while(answer!=“y”&& answer!=“n”)
答案 3 :(得分:0)
我改变了你的代码以接受一个字符。
以下是代码:
private boolean answer() {
Scanner input = new Scanner(System.in);
boolean b = false;
char answer = input.nextLine().toLowerCase().charAt(0);
while(answer != 'y' || answer != 'n' ) {
System.out.println("Answer with y (yes) or n (no)");
//lower case so that it will get y or n, no matter what the casing is
answer = input.nextLine().toLowerCase().charAt(0);
}
if (answer == 'y') {
b = true;
}
return b;
}
或者如果你真的想要一个字符串
private boolean answer() {
Scanner input = new Scanner(System.in);
boolean b = false;
String answer = input.nextLine();
while( !(answer.equalsIgnoreCase("y") || answer.equalsIgnoreCase("n")) ) {
System.out.println("Answer with y (yes) or n (no)");
answer = input.nextLine();
}
if (answer.equalsIgnoreCase("y")) {
b = true;
}
return b;
}
比较两个字符串时,请记得使用 .equals()或 .equalsIgnoreCase()