Написание программы, которая запрашивает у пользователя информацию о том, могут ли они позволить себе автомобиль или нет.при запросе пользователя ввести цену автомобиля мои блоки try / catch не работают должным образом.программа продолжает выполнять код после первого блока try / catch.Стоит отметить, что весь другой код работает так, как нужно (программа запрашивает много двойных чисел, только первый не работает)
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.InputMismatchException;
import java.util.Scanner;
public class Minimal {
public static void main(String[] args) {
// TODO Auto-generated method stub
Car car = new Car();
Scanner sc = new Scanner(System.in);
PrintWriter out;
try {
out = new PrintWriter("number.txt");
} catch (FileNotFoundException e) {
e.printStackTrace();
return;
}
System.out.println("What is the msrp?");
try
{
double price = sc.nextDouble();
car.setStickerPrice(price);
out.println(price);
}
catch (InputMismatchException e)
{
System.out.println("The MSRP is a numberical value, please reenter a number.");
out.println("The MSRP is a numberical value, please reenter a number.");
}
System.out.println("What is your down payment?");
out.println("What is your down payment?");
double pay = 0;
while (true) {
try {
pay = Double.parseDouble(sc.next());
break; // will only get to here if input was a double
} catch (NumberFormatException ignore) {
System.out.println("Invalid input, input a numerical value: ");
}
}
car.setDownPayment(pay);
out.println(pay);
car.setOutTheDoor();
System.out.println(
"Please enter your interest rate (APR) as a decimal value. For example, an interest rate of 3% would be entered as '.03.'");
out.println(
"Please enter your interest rate (APR) as a decimal value. For example, an interest rate of 3% would be entered as '.03.'");
double rate = 0;
while (true) {
try {
rate = Double.parseDouble(sc.next());
break; // will only get to here if input was a double
} catch (NumberFormatException ignore) {
System.out.println("Invalid input, input a numerical value: ");
}
}
}
}
Вывод:
Чтотакое MSRP?
g
MSRP - это числовое значение, введите число еще раз.
Каков ваш первоначальный взнос?
Неверный ввод, введите числовое значение:
g
Неверный ввод, введите числовое значение:
g
Неверный ввод, введите числовое значение:
1
Пожалуйста, введите процентную ставку (APR) в виде десятичного значения.Например, процентная ставка 3% будет введена как «.03.»
g
Неправильный ввод, введите числовое значение:
g
Неправильный ввод, введите числовое значение:
5