2013-02-20 2 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

Это потому, что вы вызываете метод сканера четыре раза. Кроме того, точка 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"); 
Смежные вопросы