Исключение не создается или отображается

100
8

Я выполняю назначение, когда мне нужно создать расписание и обработать определенные исключения для плохого ввода. У меня это работает в основном, но для моего общего исключения бросить его, похоже, не создает объект, который я хочу. Я использовал перегруженный конструктор для его создания, и когда я вызываю сообщение, он не отображает мой ввод. Мой код выглядит следующим образом:

import java.util.*;
import java.lang.Exception;

public class Scheduler{
public static void main() throws Exception{
Scanner input = new Scanner(System.in);
String name;
int time;

// Program introduction

System.out.println("Welcome to scheduling scheduler 2.0");
System.out.println("You can schedule an appointment at 1, 2, 3, 4, 5, or 6 pm");

// Creating the Array

String[] schedule = new String[6];

// While loop set to

while(filled(schedule) == false){
System.out.print("What is your name? ");
name = input.next();
boolean innerExecute = true;

// Do While loop used in order to loop until a valid time is set instead of asking for
// name again

do{
try{
System.out.print("When do you want to schedule your appointment? ");
time = input.nextInt();
System.out.println();
if(time > 6 || time < 1){
throw new InvalidTimeException("Sorry that is not a valid time");
}

else if(schedule[time - 1] == null){
schedule[time - 1] = name;
innerExecute = false;
}

else if(schedule[time - 1] != null){
throw new TimeInUseException("That time is not available.");
}

else{
throw new Exception("Bad time format, should be an integer.");
}

}

catch(TimeInUseException e){
System.out.println(e.getMessage());
System.out.println();
}
catch(InvalidTimeException e){
System.out.println(e.getMessage());
System.out.println();
}
catch(Exception e){
System.out.println(e.getMessage());
System.out.println();
String voided = input.next();
}

}while(innerExecute == true);
}

System.out.println("The schedule is as follows: ");
System.out.println();
for(int i=0; i<6; i++){
System.out.print("At " + (i+1) + " PM is " + schedule[i]);
System.out.println();
}
}

Мой выход:

Welcome to scheduling scheduler 2.0
You can schedule an appointment at 1, 2, 3, 4, 5, or 6 pm
What is your name? don
When do you want to schedule your appointment?
,
null

When do you want to schedule your appointment?

Все остальные исключения отображаются корректно, но вместо этого он печатает нуль.

спросил(а) 2021-01-25T17:13:55+03:00 6 месяцев назад
1
Решение
64

Проще говоря, когда nextInt() находит что-то, отличное от int возвращает значение InputMismatchException без сообщения. Поэтому getMessage() возвращает null. Попробуйте использовать Exception#printStackTrace() для просмотра трассировки стека.

ответил(а) 2021-01-25T17:13:55+03:00 6 месяцев назад
45

Когда вы вводите данные , вы получите InputMismatchException, сначала нужно ввести пользовательский ввод процесса, чтобы пользователь мог ввести что-либо.

try {
time = input.nextInt();
} catch (Exception e) {
System.out.println(e.getMessage());
System.out.println("Your input should be a number!");
continue;
}

enter image description here

ответил(а) 2021-01-25T17:13:55+03:00 6 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема