На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Следующие правила действуют в данном разделе в дополнение к общим Правилам Форума
1. Здесь обсуждается Java, а не JavaScript! Огромная просьба, по вопросам, связанным с JavaScript, SSI и им подобным обращаться в раздел WWW Masters или, на крайний случай, в Многошум.
2. В случае, если у вас возникают сомнения, в каком разделе следует задать свой вопрос, помещайте его в корневую ветку форума Java. В случае необходимости, он будет перемещен модераторами (с сохранением ссылки в корневом разделе).

3. Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.
4. Не рекомендуется создавать несколько несвязанных вопросов в одной теме. Пожалуйста, создавайте по одной теме на вопрос.
Модераторы: dark_barker, wind
  
> Зацикливание
    Извините, заранее, если тупой вопрос: новичок в программировании и в Java, в частности. Пытаюсь разобраться с исключениями.

    Вроде совсем простая задачка:

    Нужно ввести два числа типа int и найти сумму. Если вводится число типа double, обработка исключения передается в catch. В обоих случаях после этого должен следовать возврат к началу цикла while и процесс должен начать заново. Если оба числа int- то все тривиально и нормально. Однако если вводится число double, то процесс почему-то зацикливается и программа работает без остановки, хотя вроде по логике после catch она должна вернуться к вводу двух чисел. А вместо этого её сразу вкидывает из try в catch, хотя обеим переменным, number1 и number2, на момент передачи в try присвоено соответствующее типу значение (1).

    Видимо, я не понимаю чего-то фундаментального, но вот чего именно? Заранее благодарен, если поможете разобраться.


    ExpandedWrap disabled
      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 ...");
                   }
          }
      }
    Сообщение отредактировано: batigoal -
      Потому что необработанные входные данные для сканера уже есть. Можно добавить в обработку исключения input.skip(".*");
        Спасибо!
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0277 ]   [ 15 queries used ]   [ Generated: 3.05.24, 10:32 GMT ]