2014-11-03 146 views
0

,我讀了一本書,一個代碼,它說的是,爲了檢查一個給定的字符串是否包含一個有效的數字,如果是這樣,將其轉換爲二進制(內部)的形式,代碼應該寫成如下:檢查一個字符串是否是一個有效的數字:ArrayIndexOutOfBoundsException異常

public class Exercise5 
{ 
    public static void main(String args[]) 
    { 
     String aNumber = args[0]; 
     double result; 
     try { 
      result = Double.parseDouble(aNumber); 
      System.out.println("Number is " + result); 
     } catch (NumberFormatException exc) { 
      System.out.println("Invalid number " + aNumber); 
      return; 
     } 
    } 
} 

但正如我複製的代碼和編譯它,它會導致具有java.lang.ArrayIndexOutOfBoundsException。你認爲這個問題可能是什麼?

+0

你應該通過aNumber的當你運行它時 – 2014-11-03 13:01:32

+0

如果你不提供程序參數,'args [0]'的內容應該來自哪裏? – Tom 2014-11-03 13:02:12

回答

3

您正在訪問的唯一陣列是形式參數。您正在訪問該數組的第一個元素而不檢查它是否爲空。該數組包含傳遞給Java應用程序的命令行參數。

你應該訪問前檢查數組:

String aNumber = null; 
    if (args.length > 0) 
     aNumber = args[0]; 

你應該傳遞一個參數到您的程序。

+1

謝謝。那麼我應該在代碼上添加什麼? – MarshallLee 2014-11-03 13:02:27

1

它似乎做工精細,我只是編譯並運行它,而運行你給作爲命令行參數是多少? ,它工作得很好

來看,它從你的終端這樣

java Exercise5 56 

Number is 56.0 

如果你不知道你給正在運行的程序,而被稱爲命令行參數的參數,例如,如果你說 的Java myprogname 5 6 7

在主你

args[0]=5, 
args[1]=6 ... 
3

那麼當您運行java文件傳遞的期望數量爲字符串。

java Exercise5 123 
       ↑ 
       args[0] 

,但如果你運行而沒有經過值,那麼args[0] doesn't exist因爲在ARGS []數組。它的empty array沒有元素。所以你得到了errorjava.lang.ArrayOutOfBoundException

java Exercise5 
       ↑ 
       args[0] //Exception 

目標這個程序是檢查字符串的數字或不..

所以如果你運行你的程序將字符串傳遞WH ICHü要查一個號碼或沒有,那麼你將獲取輸出。如何使用該程序

java Exercise5 5 

輸出>>Number is 5.0

java Exercise5 a 

輸出>>Invalid number a

相關問題