Как бы получить цикл while для завершения, когда пользователь вводит "нет"

У меня есть это время цикла для класса Блэкджек:

while (playerSum < 21) {
  System.out.println("Would you like another card?");
  String input;
  System.out.flush();
  input = in.readLine();
  if (input.equalsIgnoreCase("yes")){
    int card3;
    Random r3 = new Random();
    card3 = r3.nextInt(11 - 2 + 1) + 2;
    switch (card3) {
      case 2: System.out.println("You were dealt a Two"); break;
      case 3: System.out.println("You were dealt a Three"); break;
      case 4: System.out.println("You were dealt a Four"); break;
      case 5: System.out.println("You were dealt a Five"); break;
      case 6: System.out.println("You were dealt a Six"); break;
      case 7: System.out.println("You were dealt a Seven"); break;
      case 8: System.out.println("You were dealt a Eight"); break;
      case 9: System.out.println("You were dealt a Nine"); break;
      case 10: System.out.println("You were dealt a Ten"); break;
      case 11: System.out.println("You were dealt a Ace"); break;
    }
    playerSum += card3;
  }
}

Я хочу, чтобы цикл заканчивался, когда пользователь вводит "нет", когда его спрашивают, хочет ли он другую карту. В настоящее время, если я введу что-либо, кроме "да", он продолжит спрашивать: "Хотите другую карту?". Я понимаю, почему это происходит, но я не знаю, как это исправить. Заранее спасибо.

2 ответа

Решение

Добавьте else в конец if-Statement и выйдите из цикла.

if (input.equalsIgnoreCase("yes")){
    int card3;
    Random r3 = new Random();
    card3 = r3.nextInt(11 - 2 + 1) + 2;
    switch (card3) {
      case 2: System.out.println("You were dealt a Two"); break;
      case 3: System.out.println("You were dealt a Three"); break;
      case 4: System.out.println("You were dealt a Four"); break;
      case 5: System.out.println("You were dealt a Five"); break;
      case 6: System.out.println("You were dealt a Six"); break;
      case 7: System.out.println("You were dealt a Seven"); break;
      case 8: System.out.println("You were dealt a Eight"); break;
      case 9: System.out.println("You were dealt a Nine"); break;
      case 10: System.out.println("You were dealt a Ten"); break;
      case 11: System.out.println("You were dealt a Ace"); break;
    }
    playerSum += card3;
  } else {
break;
}

Примечание: это вырвется из цикла, когда пользователь введет что-то отличное от "да". Если вы хотите выйти только на нет, используйте else if,

Вы можете просто исправить это, добавив

break;

Так будет выглядеть

if (no) { break;} 

Надеюсь это поможет.

Другие вопросы по тегам