2013-02-20 63 views
0

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

回答

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()可能在这里更喜欢消耗换行符。

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