2015-02-08 109 views
1

Test類:嘗試,漁獲物和異常處理

package learning; 

import java.io.IOException; 
import java.util.Scanner; 

public class Test { 
    static Scanner user = new Scanner(System.in); 
    public static void main(String[] args) { 
     Test2 t = new Test2(); 
     try { 
      t.run(0); 
     } catch (Exception e) { 
      try { 
       t.run(user.nextInt()); 
      } catch (Exception ee) { 
       try { 
        t.run(user.nextInt()); 
       } catch (Exception dd) {} 
      } 
     } 
    } 
} 

Test2類:

package learning; 

import java.io.IOException; 

public class Test2 extends Test { 
    public int x = 0; 

    public void run(int a) throws Exception, IOException { 
     do { 
      if (a > 1) 
       System.out.println(a); 
      x = x + 1; 
      if (a < 1) { 
       System.out.println("you're wrong"); 
       throw new Exception(); 
      } 
     } while (x==0); 
    } 
} 

它會停止,如果a > 0運行,但是當我用繩子回答它也將停止運行。我如何讓程序再次提出要求,如果我輸入2次低於1的數字,它也將停止運行,我該如何使它無限?

+0

你能重新格式化你的代碼嗎? – fge 2015-02-09 00:00:14

+0

希望有一天你會發現,在許多情況下拋出異常並不是一件好事,尤其是拋出異常而沒有消息。而且,一個數量巨大的try-catch塊是可怕的。 – 2015-02-09 00:23:38

+0

不知道你爲什麼運行(0)和運行(nextInt())。也許你可以解釋一下自己? – eckes 2015-02-09 02:24:08

回答

0

最簡單的辦法就是在其上放置一段時間(真)的循環。更好的編程實踐可能包括在(開始)和設置開始時錯誤地通過乾淨處理。

在你的情況,我不知道你的意圖是...所以下面應該工作。也擺脫那做while循環。說實話,這段代碼完全可以寫得更乾淨,但現在可以玩了。

public class Test { 
static Scanner user = new Scanner(System.in); 
public static void main(String[] args) { 
    Test2 t = new Test2(); 
    while(true) { 
     try { 
      t.run(user.nextInt()); 
      Thread.Sleep(50); 
     } catch (Exception e) { 
     } 
    } 
}