Вернитесь наверх? - PullRequest
       2

Вернитесь наверх?

0 голосов
/ 19 октября 2019

Я пытаюсь ввести неправильный адрес в адрес, чтобы повторить вопрос «Где ты живешь?»используя метод while, но он больше не работает.

import java.util.Scanner;

public class ImScrewed {

    public static void main(String[] args) {
        boolean flag = true;

        Scanner scan = new Scanner(System.in);

        while (flag) {
            System.out.println("== Welcome to UwU Cafe! ==");
            System.out.print("What is your name? [Starts with 'Mr. ' or 'Ms. '] : ");
            String name = scan.nextLine();

            if (name.startsWith("Ms. ") || name.startsWith("Mr. ")) {
                System.out.println("Welcome : " + name);
                flag = false;
            } else {
                System.out.println("Please re-enter your name");
            }
        }

        System.out.println("Where do you live? [Contains 'Street']");
        String address = scan.nextLine();

        if (address.contains("Street")) {
            System.out.println("Proceed to the next step");
            flag = false;
        } else {
            System.out.println("Please re-enter your address");
        }
    }
}

1 Ответ

2 голосов
/ 19 октября 2019

Вы должны вернуться в случае ошибки. С помощью логической переменной и простого цикла while все должно быть в порядке.

Примерно так:

boolean flag = true;

do {
    String name = scan.nextLine();
    if (name.startsWith("Ms. ") || name.startsWith("Mr. ")) {
        System.out.println("Welcome : " + name);
        // break the loop.
        flag = false;
    } else {
        System.out.println("Please re-enter your name");
    } 
} while (flag);

Вы также можете исключить переменную. Делая что-то вроде:

while (true) {
    String name = scan.nextLine();
    if (name.startsWith("Ms. ") || name.startsWith("Mr. ")) {
        System.out.println("Welcome : " + name);
        break;
    } else {
        System.out.println("Please re-enter your name");
    }
}

РЕДАКТИРОВАТЬ: поддержка или несколько полей.

// previous while loop here

flag = true; // resetting flag

while (flag) {
    System.out.println("Where do you live? [Contains 'Street']");
    String address = scan.nextLine();

    if (address.contains("Street")) {
        System.out.println("Proceed to the next step");
        // terminate the loop
        flag = false;
    } else {
        System.out.println("Please re-enter your address");
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...