Простой Do-while л oop в Java - PullRequest
       13

Простой Do-while л oop в Java

0 голосов
/ 23 апреля 2020

Я хочу запустить al oop и продолжать принимать строковый ввод, пока не будет нажата «x». Я пытаюсь выполнить do-while l oop, но он не попадает в l oop, он запускается только один раз.

Scanner sc = new Scanner(System.in);
String name;

do {
    System.out.print("Enter name or 'x' to quit: ");
    name = sc.next();

    if (name.equals("x")) {
        break;
    }

    System.out.printf("The name is %s", name);

} while (name.equals("x"));

Ответы [ 3 ]

4 голосов
/ 23 апреля 2020

Необходимо удалить условие if, чтобы оно не вышло из раннего l oop, и изменить условие прерывания, например:

Scanner sc = new Scanner(System.in);
String name;

do {
    System.out.print("Enter name or 'x' to quit: ");
    name = sc.next();

    System.out.printf("The name is %s", name);

} while (!name.equals("x"));
2 голосов
/ 23 апреля 2020

Продолжается зацикливание при нажатии «x». Таким образом, вы сделали прямо противоположное.
Добавьте восклицательный знак, чтобы отменить условие while:

while (!name.equals("x"))
1 голос
/ 23 апреля 2020

Я могу что-то упустить, но кажется, что ваш код противоречит сам себе. Вы читаете пользовательский ввод, а затем проверяете, равно ли оно х и в этом случае ломается l oop. Если это не так, вы продолжаете до оператора while, где x снова проверяется на то же условие. Таким образом, в итоге вы нарушаете l oop для того же условия, которое у вас есть для его запуска.

Возможно, вы захотите попробовать изменить ваше условие в операторе while на

while (!name.equals("x"))
...