Доброго времени суток. Решаю задачу, нужно ввести с клавиатуры 2 числа, одно типа int, второе с плавающей точкой, т.е. double или float.
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
for (int i = 0; i < 2; i++) {
int a = scanner.nextInt();
double b = scanner.nextDouble();
Привел кусок кода который соответственно проблемный, исключение выдает прямо на строке где вводится double. Я знаю, что это исключение лезет когда несоответствие типов, но у меня все соответствует! Пример исходных данных:
50 1.88
14 1.42
55 2.81
Scanner scanner = new Scanner(System.in);
int i = 0;
double d = 0;
while (true) {
try {
i = Integer.valueOf(scanner.nextLine().trim());
d = Double.valueOf(scanner.nextLine().trim().replace(",", "."));
break;
} catch (NumberFormatException e) {
System.out.println("Ошибка ввода");
}
}
System.out.println(i + " * " + d);
Сделайте так. Это пользовательский ввод, посему прилететь может что угодно, в т.ч. совсем не цифры. Поэтому берите строку, обрезайте пробелы, меняйте запятую на точку в случае с даблом и пытайтесь ее затолкать в инт или дабл. Этот код не упадет, а цикл в совокупность с блоком, перехватывающим исключения, заставит пользователя вводить значения до тех пор, пока не будут введены именно числа.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей