Итак, у меня есть метод, который использует userInput на клавиатуре для подключения к калькулятору.Очевидно, что в поле ввода не может быть строк или отрицательных чисел, поэтому все три входа заключены в блок try, чтобы перехватить любое исключение.Проблема в том, что я пытаюсь выдать исключение, когда ввод неправильный ВНУТРИ блока try, но когда исключение перехвачено, отображается сообщение блока try-catch.Вот код:
public static void calculateTips()
{
//Varibles
int tipPercentage = 0;
int partySize = 0;
double billAmount = 0.0;
//Variable to loop through try catch blocks
int x = 0;
String yesOrNo;
boolean choice;
//Decimal Format
DecimalFormat dollar = new DecimalFormat("$###,##0.00");
//Declare object
TipCalculator bill;
//Create Scanner object
Scanner userInput = new Scanner(System.in);
do
{
//Fill values for tip calculator from user
System.out.println("Enter the bill amount: ");
try
{
billAmount = userInput.nextDouble();
if(billAmount < 0)
throw new Exception("Bill amount can not be negative. Please try again.");
System.out.println("Enter your desired tip percentage (20 equals 20%): ");
tipPercentage = userInput.nextInt();
if(tipPercentage < 0)
throw new Exception("Tip percentage can not be negative. Please try again.");
System.out.println("Enter the size of your party: ");
partySize = userInput.nextInt();
if(partySize < 0)
throw new Exception("Party Size can not be negative. Please try again.");
}
catch(Exception e)
{
System.out.println("Invalid Input. Please try again." + "\n");
calculateTips();
}
Я пытался использовать InputMismatchType как общее исключение, но мне не повезло, что это сработало.Как вы видите, я пытаюсь отобразить эти пользовательские сообщения в блоке try.Если кто-то может помочь, это было бы здорово.