Почему мое исключение не распечатает заявление о печати? (Java) - PullRequest
0 голосов
/ 22 февраля 2020

Оператор print в моем исключении никогда не печатается. Если я ничего не введу, он просто попросит меня ввести название круизного лайнера. Мне нужно, чтобы он выдавал оператор печати исключения вместе с этим, если бы кто-то вводил пустую строку или что-либо, кроме строки.

 do {
  try {
      System.out.println("Enter name of cruise ship: ");
      cruiseShipName = scnr.nextLine();

      }
  catch(Exception e){
      e.printStackTrace();
        System.out.println("Invalid Input. Please try again.");
    }
} while (cruiseShipName.equals(""));

Ответы [ 4 ]

1 голос
/ 22 февраля 2020

Возможно, ваш код не сгенерирует никаких исключений, если scnr.nextLine () пуст.

В вашем случае, если вы хотите попросить пользователя повторить попытку, вы можете сделать следующее:

`

do {
    System.out.println("Enter name of cruise ship: ");
    cruiseShipName = scnr.nextLine();
    if (cruiseShipName.equals("")) {
        System.out.println("Invalid Input. Please try again.");
    }
} while (cruiseShipName.equals(""));

`

0 голосов
/ 22 февраля 2020

Сделайте это следующим образом:

do {
    System.out.print("Enter name of cruise ship: ");
    cruiseShipName = scnr.nextLine();
    if ("".equals(cruiseShipName) || cruiseShipName.matches("[0-9]+")) {
        System.out.println("Invalid Input. Please try again.");
    }
} while ("".equals(cruiseShipName) || cruiseShipName.matches("[0-9]+"));

Пробный прогон:

Enter name of cruise ship: 
Invalid Input. Please try again.
Enter name of cruise ship: 123
Invalid Input. Please try again.
Enter name of cruise ship: hello
0 голосов
/ 22 февраля 2020

Этот код на самом деле не выдает исключение. У вас нет ничего, что проверяет, является ли ввод действительным, и выдает исключение, если это не так.

Итак, сейчас ввод всегда действителен.

0 голосов
/ 22 февраля 2020

Может помочь вам.


do {
  try {
      System.out.println("Enter name of cruise ship: ");
      cruiseShipName = scnr.nextLine();
      if(cruiseShipName.equals("")) throw new Exception("");
      }
  catch(Exception e){
      e.printStackTrace();
        System.out.println("Invalid Input. Please try again.");
    }
} while (cruiseShipName.equals(""));


...