2013-01-14 201 views
-1

我有我的64位Linux系統上使用Java編寫的代碼:爲什麼我得到這個名爲java.lang.ArrayIndexOutOfBoundsException的錯誤?

class WrapperClass1 
    { 
     public static void main(String s []) 
     { 
      int noinput=s.length; 
      System.out.println("Number of values entered is :- " + noinput); 
      System.out.println(s[0] + "," + s[1]); 
      int x = Integer.parseInt(s[0]); 
      int y = Integer.parseInt(s[1]); 
      int z = x + y; 
      System.out.println(" Sum = " + z); 
     } 
    }; 

現在,當我嘗試編譯它,它編譯成功,但是當我執行程序它顯示我叫一個例外:

  Number of values entered is :- 0 
      Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 
      at WrapperClass1.main(WrapperClass1.java:7) 
+1

運行時,您沒有在代碼中傳遞任何命令行參數。所以,你不能訪問'[0]'。 –

+0

你是怎麼執行這個的?你在運行時是否傳遞任何參數? – Renjith

+0

感謝朋友們,我通過了命令行上的參數解決了我的問題... –

回答

0

輸入:字符串[]

哪個方法? - >main(String[] args)

什麼時候給? - >雖然我們說要執行java <className> <input1> <input2> ...

什麼時候拋出ArrayIndexOutOfBoundsException? - >

初始:一個String []

但你初始化變量(陣列)之前,試圖訪問其是不可用的索引......

解決方案:提供通過所述的輸入命令(因爲它們是命令行參數)

即使未輸入輸入,如何避免錯誤? - >檢查數組的大小,

希望這有助於

+1

感謝朋友,解決了我的問題:) –

0

您沒有傳遞任何導致此問題的參數。

ArrayIndexOutOfBoundsException

拋出,表明陣列已經用非法 索引訪問。該索引或者是負值,或者大於或等於該陣列的大小 。

在你的情況下,你沒有通過執行程序。所以它在訪問s[0]s[1]時拋出異常。

0

你的數組s是空的,所以當你試圖像s [0]那樣彈出它的項目時它會拋出這個異常,因爲它沒有任何東西。

0

你應該考慮使用如果聲明,檢查是否noinput是至少2。然後你可以用S [0]和S [1 ]自由地沒有得到ArrayIndexOutOfBoundsException