2014-08-30 2 views
0

Почему выход продолжает работать? Когда я запускаю эту программу, и я вхожу в выход, она продолжает работать и не позволяет мне вводить больше чисел. Почему это происходит?Выход продолжает работать

import java.util.InputMismatchException; 
import java.util.Scanner; 

public class ExceptionTest2 
{ 

    public static void main(String[] args) 
    { 
     Scanner st = new Scanner(System.in); 
     int ab, bd, cde; 
     ab = bd = cde = 0; 
     boolean infinite, in; 
     do 
     { 
      System.out.println("Enter the numbers to divide"); 
      infinite = false; 
      in = true; 
      try 
      { 
       ab = st.nextInt(); 
       bd = st.nextInt(); 
       infinite = false; 
       in = true; 
      } 
      catch (InputMismatchException e) 
      { 
       System.out.println("Invalid input"); 
       in = true; 
      } 
      finally 
      { 
       if (in) 
       { 
        try 
        { 
         System.out.println("I am in try block before exception"); 
         cde = ab/bd; 
         System.out.println("I am in try block after exception"); 
        } 
        catch (Exception e) 
        { 
         infinite = true; 
        } 
        finally 
        { 
         if (!infinite) 
         { 
          System.out.println("Answer is " + cde); 
         }; 
        } 
       } 
      } 
     } 
     while (cde != 100); 
     st.close(); 
    } 
} 
+0

Какая линия продолжает работать? Кроме того, в будущем это поможет вам значительно использовать более описательные имена переменных. – Zyerah

+1

что вы ввели? Может быть, 'cde' никогда не было 100. – Henry

+0

Я только что запустил это, и он работал отлично для меня (ну, кроме того, что дал мне результаты с целым делением). Это позволило мне ввести дополнительные числа, чтобы разделить только штраф. Можете ли вы привести нам пример вашего ввода и пример вывода, который вы получаете? – therealrootuser

ответ

1

проблема:

ab = st.nextInt(); 

При вводе String на нем я не буду получать потребляемый nextInt, и никто не будет, таким образом, давая вам бесконечный цикл

решение:

Вам необходимо использовать эти символы s, что вы введены в свой улов блока, чтобы избежать бесконечного цикла

образец:

  catch (InputMismatchException e) { 
       System.out.println("Invalid input"); 
       st.nextLine(); 
       in=true; 
      } 
Смежные вопросы