Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.02.2017, 19:37   #1
Max00766
Форумчанин
 
Регистрация: 15.11.2015
Сообщений: 151
По умолчанию Не обрабатывается исключение

Подскажите, пожалуйста, почему не обрабатывается исключение когда я ввожу не int число а букву? Все равно в консоли выбивает исключение:
Введите число:
s
Введите номер задания, для выхода введите 0
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at lab7.Main.main(Main.java:13)

Код Main
Код:
package lab7;
 
import java.util.Scanner;
 
public class Main {
 
	public static void main(String[] args) {
		
		Scanner in = new Scanner(System.in);
		int choose = -1;
		while (choose != 0) {
			System.out.println("Введите номер задания, для выхода введите 0");
			choose = in.nextInt();
			
			switch (choose) {
			case 1: choose = 1;
			try {
				Factorial fact = new Factorial();
				int f = 0;
				System.out.println("Введите число:");
				f = in.nextInt();
				System.out.println("Факториал =  " + fact.getFact(f));
			} catch (Exception e) {
				// TODO: handle exception
			}
				break;
 
// Внизу еще код, но он к этому никак не соприкасается
Код класса Factorial
Код:
package lab7;
 
public class Factorial {
	
	public int getFact(int fac){
		
		int result = 1;
		for (int i = 1; i <= fac; i++) {
			result = result * i;
		}
		return result;
	}
}
Max00766 вне форума Ответить с цитированием
Старый 10.02.2017, 20:12   #2
alexey_kip
Форумчанин
 
Регистрация: 19.11.2011
Сообщений: 198
По умолчанию

В этой строчке ожидается ввод int
Код:
choose = in.nextInt();
а если ввести букву - исключение.
alexey_kip вне форума Ответить с цитированием
Старый 10.02.2017, 20:32   #3
Max00766
Форумчанин
 
Регистрация: 15.11.2015
Сообщений: 151
По умолчанию

Цитата:
Сообщение от alexey_kip Посмотреть сообщение
В этой строчке ожидается ввод int
Код:
choose = in.nextInt();
а если ввести букву - исключение.
Я и ввожу там int, а букву ввожу в этой строке
Код:
f = in.nextInt();
И по идеи try catch должен ее обрабатывать, а обрабатывает почему-то
Код:
choose = in.nextInt();
Max00766 вне форума Ответить с цитированием
Старый 13.02.2017, 21:15   #4
vshurig
aaa
 
Регистрация: 13.02.2017
Сообщений: 4
По умолчанию

Это своеобразное поведение Scanner-а. Постарайтесь детальней изучить как работают методы nextInt и nextLine.

Вам следует добавить
Код:
in.nextLine();
после ввода символа в

Код:
f = in.nextInt();
А именно...

Код:
  Scanner in = new Scanner(System.in);

        int choose = -1;
        while (choose != 0) {
            System.out.println("Введите номер задания, для выхода введите 0");
            choose = in.nextInt();
            try {
            switch (choose) {
                case 1:
                    choose = 1;

                    Factorial fact = new Factorial();
                    int f = 0;
                    System.out.println("Введите число:");
                    f = in.nextInt();
                    System.out.println("Факториал =  " + fact.getFact(f));

                    break;
            }   
            } catch (Exception e) {

                // TODO: handle exception
                in.nextLine();
                }

http://ru.stackoverflow.com/question...%D0%B5-nextint
vshurig вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не обрабатывается массив. Паскаль Sting95 Помощь студентам 3 29.04.2014 08:34
Explorer.exe Исключение неизвестное программное исключение Windows XP, что делать? Igorilla Windows 6 02.04.2013 22:49
Исключение неизвестное программное исключение... Host-2013 Паскаль, Turbo Pascal, PascalABC.NET 19 09.02.2013 21:30
не обрабатывается <?php=$i?> CepbIu PHP 10 25.02.2011 01:11
Неверно обрабатывается GET-запрос Cold_Night Работа с сетью в Delphi 3 31.03.2009 12:17