它在IF语句中工作,但在ELSE语句中,我必须在打印出来之前键入4个响应。有任何想法吗?我知道我需要以某种方式清除缓冲区。
System.out.println("Would you like to play a game? (Y/N)");
if(scanInput.next().equalsIgnoreCase("y")||scanInput.next().equalsIgnoreCase("Y")) {
System.out.println("let's play");
}
else if (scanInput.next().equalsIgnoreCase("n") || scanInput.next().equalsIgnoreCase("N")){
System.out.println("Goodbye");
}
答案 0 :(得分:5)
只需阅读InputStream
一次:
String query = scanInput.next();
if (query.equalsIgnoreCase("y")) {
System.out.println("let's play");
} else if (query.equalsIgnoreCase("n"))
System.out.println("Goodbye");
} // handle case where not Y or N ...
注意,没有必要使用多个String#equalsIgnoreCase
表达式。此处scanInput.nextLine()
可能更喜欢使用换行符。
答案 1 :(得分:0)
这是因为您正在调用扫描仪的next()
方法四次。此外,equalsIgnoreCase()
的要点是您不需要同时测试y
和Y
。
System.out.println("Would you like to play a game? (Y/N)");
String x = scanInput.next();
if(x.equalsIgnoreCase("y")) {
System.out.println("let's play");
}
else if (x.equalsIgnoreCase("N"))
System.out.println("Goodbye");