2012-08-09 47 views
-5
public class exdemo1 { 

    public static void main(String args[]) { 
     int a = 10, b = 0, ans; 
     int arr[] = {10, 20, 30}; 
     try { 
      ans = a/b; 
      System.out.println("Division" + ans); 
      System.out.println("4th Element" + arr[3]); 
     } catch (ArithmeticException ae) ; 
      { 
       System.out.println(ae); 
      } 
     catch (ArrayindexoutofboundsException ae) { 
      System.out.println(ae); 
     } 
    } 
} 
+2

你的錯誤是什麼? – BlackVegetable 2012-08-09 15:00:15

+0

1.正確設置您的代碼(複製/粘貼,並選擇「{}」選項)。 2.你是什麼意思*「無法運行下面的程序」*?它不編譯?它會拋出異常?它不符合你的期望?請具體說明。 – assylias 2012-08-09 15:00:26

+0

當前的格式使得這個完全不可讀。 *請* [閱讀此](http://meta.stackexchange.com/a/22189/184494)如何正確格式化代碼。 – 2012-08-09 15:01:08

回答

3

既然您的代碼已正確格式化,您可能會注意到在第一個catch塊之後還有一個額外的;

+1

ans是在a和b之後聲明的。 – 2012-08-09 15:02:41

+0

@XavierDelamotte只是注意到了。謝謝。 – assylias 2012-08-09 15:03:12

+0

它給出了我寫catch的錯誤(ArithmeticException ae) - 它在這裏給出了一些提示,它在紅色下劃線和我寫了catch的地方(ArrayindexoutofboundsException ae)-----這裏的錯誤說有不要嘗試。它也給出了使用javanetbeans編譯器編譯後的錯誤線程「主」java.lang.RuntimeException異常:不可編譯的源代碼 - 找不到符號 symbol:class ArrayindexoutofboundsException location:class exdemo1 \t at exdemo1.main(exdemo1.java :17) Java結果︰1 – user1560596 2012-08-09 15:09:10

0

在你的第一個catch後面有一個額外的分號。刪除。另外,我不認爲ArrayindexoutofboundsException是一個有效的例外,應該是ArrayIndexOutOfBoundsException

1

這是ArrayIndexOutOfBoundsException異常,而不是ArrayIndexOutOfBoundsException異常

+0

+1也是的! – assylias 2012-08-09 15:03:56

2

我不知道你的意思究竟是什麼,但這些都是我注意到的問題:

  • 你的陣列有4元,它有3個元素,最後一個可以通過訪問arr[2]
  • 你不能被0除。
  • catch (ArithmeticException ae) ;您必須刪除行末的;,您不需要那裏。
  • ArrayindexoutofboundsException正確的分類是ArrayIndexOutOfBoundsException

我假設你知道前兩個由於catch語句。

修復這些應該讓你的程序編譯。

0

您已將兩個程序混合在一起,但只會引發一個異常。你的程序的功能基本上與

public static void main(String... args) { 
    int a = 10, b = 0; 
    int ans = a/b; 
} 

這將打印拋出的異常。