2009-11-19 175 views
0

我試圖循環異常,但由於某種原因它不是給我的選項重新寫我的掃描文件:循環永遠

我不知道如何使用的BufferedReader所以這就是爲什麼我使用這個。任何線索?

這裏是我的標準類和我的方法

package arrayExceptionsWithInput; 
import java.util.*; 
public class GetThoseNumbersBaby { 

    int firstInt; 
    int secondInt; 
    boolean error; 
    Scanner yourNumbers = new Scanner(System.in); 

    public void findNumbers() 
    { 
     System.out.println(" please enter your first number"); 
     firstInt = yourNumbers.nextInt(); 
     System.out.println(" pleas enter your second number"); 
     secondInt = yourNumbers.nextInt(); 
     int finalInt = (firstInt+secondInt); 
     System.out.println("total is: " + finalInt); 
    } 
} 

這是我的不同之處主要類與一環Implemeted一個:

package arrayExceptionsWithInput; 
import java.util.*; 

public class InputException 
{ 
    public static void main(String[] args) 
    { 
     boolean error = false; 
     GetThoseNumbersBaby zack = new GetThoseNumbersBaby(); 


     { 
      do { 
       try 
       { 
        zack.findNumbers(); 
       } 
       catch(InputMismatchException Q) 
       { 
        System.out.println(" one of your integers was incorrect, please try again"); 
        Q.printStackTrace(); 
        error = true; 
       } 
      } while (error == true); 
     } 
     error = false; 
    } 
} 

如果任何人有如何循環此不同的任何想法我都是耳朵。

+0

你爲什麼要在{}內包裹do-while? – 2009-11-19 12:35:59

+0

'while(error == true)' - >'while(error)' – JRL 2009-11-19 12:37:44

+0

while(error == true)會更習慣性寫入while(error) – Henry 2009-11-19 12:39:17

回答

0

我決定也擺脫方法類 的,只是把該方法進入試異常區。

掃描儀使用了一個.nextLine,它似乎是固定的。

這看起來好嗎?

package arrayExceptionsWithInput; 
import java.util.*; 
public class InputException 
{ 
public static void main(String[] args) 
{ 
boolean error = false; 
int firstInt; 
int secondInt; 
Scanner yourNumbers = new Scanner(System.in); 
{ 
    do{ 
      try 
      { 

        System.out.println(" please enter your first number"); 
        firstInt = yourNumbers.nextInt(); 
        yourNumbers.nextLine(); 
        System.out.println(" pleas enter your second number"); 
        secondInt = yourNumbers.nextInt(); 
        yourNumbers.nextLine(); 
        int finalInt = (firstInt+secondInt); 
        System.out.println("total is: " + finalInt); 
        yourNumbers.nextLine(); 

      } 
      catch(InputMismatchException Q) 
      { 

       Q.printStackTrace(); 
       System.out.println(" one of your integers was incorrect, please try again"); 
       error = true; 
       yourNumbers.nextLine(); 
      } 
     }while (error == true); 
    }error = false; 
} 
} 
+0

掃描儀保持答案,並沒有休息,除非我把你的Numnbers.NextLine() – OVERTONE 2009-11-19 12:33:28

+0

更有用的,如果你編輯你的問題更新,而不是通過答案的方式添加更新。 – rsp 2009-11-19 12:34:04

+2

您仍然需要在循環中設置error = false,否則如果您確實遇到異常,則錯誤將被設置爲true並且永遠不會被清除。 – 2009-11-19 12:34:45

1

設置錯誤false 之前的操作。這樣,如果用戶得到正確的結果,你有正確的退出條件。

error = false; 
zack.findNumbers(); 
+0

這裏downvote的原因是什麼? – 2009-11-19 12:37:21

+0

對不起,還在使用太棧接口。我不知道我有足夠的代表投票在帖子 – OVERTONE 2009-11-19 15:30:36

0

你循環而'錯誤'變量值'真'。然而,只有當拋出時(即當'捕獲'塊被執行時)它才變成'真''。控制流程沒有達到它。