Обработка исключений Java (пустые места в пользовательском вводе)
Мне нужно создать класс исключений, который будет генерировать исключение, когда в пользовательском вводе есть пробелы для имени, пароля и т. Д. (Все строки). Я написал весь код, который, по моему мнению, был необходим, и независимо от того, что я ввел, всегда выдается исключение.
Что я делаю неправильно?
Ниже приведены фрагменты кода. Если нужна вся программа, дайте мне знать.
EmptyInputException
учебный класс:
public class EmptyInputException extends Exception{
public EmptyInputException(){
super("ERROR: Spaces entered - try again.");
}
public EmptyInputException(String npr){
super("ERROR: Spaces entered for " + npr + " - Please try again.");
}
}
Здесь getInput
метод, где я ловлю исключение:
public void getInput() {
boolean keepGoing = true;
System.out.print("Enter Name: ");
while (keepGoing) {
if(name.equalsIgnoreCase("Admin")){
System.exit(1);
}else
try {
name = scanner.next();
keepGoing = false;
throw new EmptyInputException();
} catch (EmptyInputException e) {
System.out.println("ERROR: Please do not enter spaces.");
keepGoing = true;
}//end loop
}
System.out.print("Enter Room No.:");
while (keepGoing) {
if(room.equalsIgnoreCase("X123")){
System.exit(1);
}else
try {
room = scanner.next();
if (room.contains(" ")){
throw new EmptyInputException();
}else
keepGoing = false;
} catch (EmptyInputException e) {
System.out.println("ERROR: Please do not enter spaces.");
keepGoing = true;
}
}
System.out.print("Enter Password:");
while (keepGoing) {
if(pwd.equals("$maTrix%TwO$")){
System.exit(1);
}else
try {
pwd = scanner.next();
keepGoing = false;
throw new EmptyInputException();
} catch (EmptyInputException e) {
System.out.println("ERROR: Please do not enter spaces.");
keepGoing = true;
}
}
}
Я чувствую, что мне не хватает той части, где на входе сканера должны быть пробелы, такие как:
if(name.contains(" "))
и так далее...
Пока что мой вывод (например, после ввода имени) скажет: Error: Please do not put spaces.
2 ответа
try {
name = scanner.next();
keepGoing = false;
if(name.contains(" "))
throw new EmptyInputException();
}
Должен сделать трюк?
Ваше предположение было правильным.
try {
name = scanner.next();
keepGoing = false;
throw new EmptyInputException(); // You're always going to throw an Exception here.
} catch (EmptyInputException e) {
System.out.println("ERROR: Please do not enter spaces.");
keepGoing = true;
}
Вероятно, небрежная ошибка. Нуждается в if(name.contains(" "))
:D То же самое произошло с вашим паролем.