如何清除缓冲区以便这样做?

时间:2013-02-20 18:22:32

标签: java

它在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");
    }

2 个答案:

答案 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()的要点是您不需要同时测试yY

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