Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.129.23.30] |
|
Сообщ.
#1
,
|
|
|
Извините, заранее, если тупой вопрос: новичок в программировании и в Java, в частности. Пытаюсь разобраться с исключениями.
Вроде совсем простая задачка: Нужно ввести два числа типа int и найти сумму. Если вводится число типа double, обработка исключения передается в catch. В обоих случаях после этого должен следовать возврат к началу цикла while и процесс должен начать заново. Если оба числа int- то все тривиально и нормально. Однако если вводится число double, то процесс почему-то зацикливается и программа работает без остановки, хотя вроде по логике после catch она должна вернуться к вводу двух чисел. А вместо этого её сразу вкидывает из try в catch, хотя обеим переменным, number1 и number2, на момент передачи в try присвоено соответствующее типу значение (1). Видимо, я не понимаю чего-то фундаментального, но вот чего именно? Заранее благодарен, если поможете разобраться. import java.util.InputMismatchException; import java.util.Scanner; public class QuotientWithException { public static void main(String[] args) { Scanner input = new Scanner(System.in); while (true) { // Prompt the user to enter two integers int number1=1; int number2=1; try { System.out.print (number1); System.out.print("Enter two integers: "); number1 = input.nextInt(); number2 = input.nextInt(); } catch (InputMismatchException u) { System.out.println("Exception: wrong input, sorry "); } System.out.println("Execution continues ..."); } } } |
Сообщ.
#2
,
|
|
|
Потому что необработанные входные данные для сканера уже есть. Можно добавить в обработку исключения input.skip(".*");
|
Сообщ.
#3
,
|
|
|
Спасибо!
|