Как предотвратить ввод других символов, кроме необходимых мне? - PullRequest
0 голосов
/ 27 мая 2020

Я использую этот фрагмент кода для получения символов от пользователей. Если кто-то поставит "к", моя программа закрывается. Если кто-то поставил что-нибудь еще, например "a" или "b" et c. моя программа снова работает с самого начала.

Как закодировать таким образом, чтобы если кто-то поставил что-нибудь еще, например 1, 2 или 3 или z, он печатал «это недопустимый символ, пожалуйста, исправьте его» * ​​1003 *

Я хочу иметь второй символ для запуска программы с начала, например «f».

                while (!end) { //do something
                Scanner st = new Scanner(System.in);
                String str = st.nextLine();
                if (str.equals("k")) {
                    end = true;}

Ответы [ 4 ]

0 голосов
/ 27 мая 2020

Вам нужно будет использовать оператор else. Например:

while (!end) { //do something
    Scanner st = new Scanner(System.in);
    char str = st.next().charAt(0); 
    if (str == 'k')) {
        end = true;
    } else if (str == 'a')) {
        // handle program work from the beginning
    } else {
        System.out.println("it is not allowed character, please correct it");
    }
}

Это проверяет, совпадает ли str с "k" или "a", и если нет, он напечатает предоставленное вами текстовое сообщение.

В языках программирования оператор else является альтернативным оператором, который выполняется, если результат предыдущего условия проверки принимает значение false.

0 голосов
/ 27 мая 2020

В вашем вопросе вы должны получать символы от пользователя, поэтому вам не нужно определять строковую переменную, вам нужно определить символьную переменную и читать символы от пользователя, Нет необходимости использовать st.nextLine() Вместо этого используйте с st.next().charAt(0).

Дополнительно необходимо добавить выписку else.

boolean end = false;
    while (!end) { //do something
        Scanner st = new Scanner(System.in);
        char str = st.next().charAt(0); 
        if (str=='k') {
            end = true;}
        else {
        System.out.println(" is not a valid character. Please try again.");
        }
    }
0 голосов
/ 27 мая 2020

Вот как бы я go это сделал:

outer:
while (true) {
    //do stuff before
    System.out.println("before");

    while (true) {
        Scanner st = new Scanner(System.in);
        String str = st.nextLine();

        if (str.equals("k")) {
            break outer;
        } else if (str.equals("f")) {
            continue outer;
        }

        System.out.println('"' + str + "\" is not a valid character. Please try again.");
    }
}
0 голосов
/ 27 мая 2020

Вам просто нужен блок else в вашем коде. Проверьте это:

import java.util.Scanner;

public class WhileLoop {
    public static void main(String[] args) {
        boolean end = false;
        while (!end) { //do something
            Scanner st = new Scanner(System.in);
            String str = st.nextLine();
            if (str.equals("k")) {
                end = true;
                System.out.println("Will exit the program now since you have entered k");
            } else {
                System.out.println("it is not allowed character, please correct it");
                System.exit(0);
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...