在do-while中返回语句

时间:2012-12-26 03:11:14

标签: java return do-while

我有一个代码

  boolean playerTakesAHit() throws IOException {
  char ch = ' '; boolean hit=false;
  do{
   System.out.print("Hit or Stay: "); 
   System.out.flush();
   String playersDecision = keyboardInput.readLine(); 
   try {ch = playersDecision.charAt(0);
   } catch (StringIndexOutOfBoundsException exception) {
   if(ch == 'H' || ch == 'h') {
           return true;
       }
   if(ch == 'S' || ch == 's') {
           return false;
       }}
  } while(true);

我想要的是这个方法会在用户点击H / h(返回true)时重复,并在用户点击S / s时立即停止。但是当我使用:

调用此方法时
 ...
 while(playerTakesAHit()) {
  System.out.println("Player Hit"); 
 }
 ...

我有这样的事情:

  

命中或留下:h

     

命中或留下:h

     

命中或留下:s

     

命中或留下:S

     

点击或停留:

重复询问Hit或Stay来自用户的输入。 谁知道我的错误在哪里?

1 个答案:

答案 0 :(得分:0)

试试这个:

  char ch = ' '; 
  boolean hit=false;
  do{
      System.out.print("Hit or Stay: "); 
      System.out.flush();
      String playersDecision = keyboardInput.readLine(); 
      try {
          ch = playersDecision.charAt(0);
      } catch (StringIndexOutOfBoundsException exception) {
          ch = ' '; //blank out
      }
      if(ch == 'H' || ch == 'h') {
         hit = true;
      }
    } while(!(ch == 'S' || ch == 's'));
    return hit;