2014-11-10 2 views
1

Я взял отрывок из своего кода, над которым нужно работать, я знаю его стандартную практику, чтобы опубликовать весь код, но я не думаю, что он нужен здесь.Цитирование до ввода определенного символа?

if(playerValue > 10 && playerValue < 21){ 

      System.out.println("Players Value so far " + playerValue + ", Do you want to draw another card? Y/N"); 
      // input a y or n answer 
      decision = sob.next(); 

      if(decision.equals("Y") || decision.equals("y")){ 
       continue; 

      }else if(decision.equals("N") || decision.equals("n")){ 
       break; 
      } 

     } 
    } 

Как, как я могу изменить это заявление либо принять на Y или N, а прямо сейчас, если я что-нибудь вход бар им два персонажа, он будет продолжать, как будто я нажал Y.

+0

почему вы не можете использовать сделать - в то время как цикл в Java? – ha9u63ar

+0

У вас должен быть случай с другим ... – brso05

+0

Я подумал об этом, но был смущен тем, как я это сделаю. @hagubear –

ответ

1

Вы должны иметь еще случай:

if(playerValue > 10 && playerValue < 21){ 

      System.out.println("Players Value so far " + playerValue + ", Do you want to draw another card? Y/N"); 
      // input a y or n answer 
      decision = sob.next(); 

      if(decision.equalsIgnoreCase("Y")){ 
       continue; 

      }else if(decision.equalsIgnoreCase("N")){ 
       break; 
      } 
      else 
      { 
       //whatever you want to happen if they don't enter either y or n 
      } 

     } 
    } 

Может быть, в других есть еще один цикл, который говорит, пожалуйста, введите правильный вход и держать зацикливание, пока они не дают допустимой входные ...

0

Вот как вы с изменить код, чтобы «настаивать» на пользователя ввести Y или ее N:

static void readYesOrNo(Scanner input) { 
    String str; 
    while (true) { 
     str = input.next(); 
     if (str.equalsIgnoreCase("y")) { 
      return true; 
     } 
     if (str.equalsIgnoreCase("n")) { 
      return false; 
     } 
     System.out.println("Please enter Y or N"); 
    } 
} 

Я ставлю этот код в статический метод, чтобы вы могли использовать его в других местах. Теперь вы можете использовать этот метод в вашем коде, как это:

if(playerValue > 10 && playerValue < 21){ 
    System.out.println("Players Value so far " + playerValue + ", Do you want to draw another card? Y/N"); 
    if (readYesOrNo(sob)) { 
     continue; 
    } 
    break; 
} 
0

Вы можете попробовать это:

 if(playerValue > 10 && playerValue < 21){ 
      while(true){ 
      System.out.println("Players Value so far " + playerValue + ", Do you want to draw another card? Y/N"); 
      // input a y or n answer 

     decision=sob.next(); 
     if(decision!=null && (decision.equalsIgnoreCase("y")||decision.equalsIgnoreCase("n"))){ 
      break; 
     } 
     else{ 
      System.out.println("please answer with Either y or n"); 
      continue; 
      } 
     }//end of while loop 

     //put your code here 
    } 
Смежные вопросы