Обработка исключений при работе с пользовательским вводом для начинающего - PullRequest
0 голосов
/ 10 мая 2018

Мне нужно сделать небольшую программу, основанную на магазине, я должен добавить новых клиентов в коллекцию покупателей магазина, новые предметы в магазине, отредактировать их и т. Д., Поэтому я использую пользовательский ввод (сканер) для создания этого нового объекты. У меня есть все методы, которые мне нужны для этого, уже без исключений.

Я хотел бы, чтобы некоторая простая обработка исключений java для того, чтобы пользователь вводил строку, где он должен был ввести целое число или наоборот. Например, если я выполняю метод для создания товара для магазина и когда я прошу пользователя ввести запас (целое число), пользователь вводит привет, а не число, в котором происходит сбой программы, я хотел бы обработать исключение, показать сообщение об ошибке, не создавайте объект и не перезапускайте метод создания элемента с самого начала (или перезапускайте подменю, в котором он находился раньше)

я должен использовать попробовать и поймать? метод в попытке, когда это не удается поймать бросает сообщение об ошибке и перезапускает меню создания элемента? Как мне это сделать? Я искал и нашел интересный метод для целых чисел здесь: Обработка исключений при отсутствии пользовательского ввода в Java

Проблема в том, что я не знаю, как я мог обработать возможные исключения при введении идентификатора для пользователя (который будет представлять собой строку, состоящую из 8 чисел и буквы, например, например: 13234354A, так как я могу показать ошибка, если пользователь вводит «sjadsjasdj» как идентификатор вместо чего-то вроде реалистичного) или некоторые другие вещи, такие как обработка исключений для нескольких перечисляемых или логических переменных, которые я использую при создании этих объектов.

Я искал на этом сайте и искал в Google, но я не нашел того, что мне нужно, или он является более сложным, чем то, что я понимаю с моими небольшими знаниями, также английский не является моим родным языком, поэтому мои поиски могут быть немного выкл.

Спасибо за ваше время!

1 Ответ

0 голосов
/ 10 мая 2018

Когда вы читаете ввод, просто прочитайте, например, весь идентификатор 123A и ​​убедитесь, что каждый символ действителен, используя, например, Character.isDigit () и Character.isLetter (). С 4-х буквенным регистром

import java.util.Scanner;
public class Test {
    public static void main(String[]args) {
        boolean flag = false;
        Scanner kb = new Scanner(System.in);
        while(!flag) {
            String id = kb.next();//To get the next word
            flag = true;//by default its assumed to be valid input
            if(id.length() == 4) {
                for(int i = 0; i < 3; i++) {
                    if(!Character.isDigit(id.charAt(i))) {
                        flag = false;
                    }
                }
                if(!Character.isLetter(id.charAt(3))) {
                    flag = false;
                }
            }
            else {
                flag = false;
            }
            System.out.println("ID is "+ (flag == true?"Valid":"Invalid"));
        }
    }
}

выход

1234
ID is Invalid
123A
ID is Valid

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

...