簡體   English   中英

檢查字符串是否為有效數字:ArrayIndexOutOfBoundsException

[英]Checking whether a String is a valid number: 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 您認為問題可能是什么?

您要訪問的唯一數組是args。 您正在訪問該數組的第一個元素,而不檢查其是否為空。 該數組包含傳遞給Java應用程序的命令行參數。

您應該在訪問數組之前檢查它:

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

並且您應該將參數傳遞給您的程序。

運行Java文件時,您應該將所需的數字作為字符串傳遞。

java Exercise5 123
                ↑
              args[0]

但是,如果您不傳遞任何值而運行,則args[0] doesn't exist因為args []數組中沒有元素。它是empty array您會收到error java.lang.ArrayOutOfBoundException

java Exercise5  
                ↑
              args[0]  //Exception

該程序的目標是檢查字符串是否為數字。

因此,如果您運行的程序傳遞了一個您想檢查一個數字或不想要一個數字的字符串,那么您將獲得輸出。如何使用此程序

java Exercise5 5

輸出>> Number is 5.0

java Exercise5 a

輸出>> Invalid number a

看來工作正常,我只是編譯並運行它,而在運行時您是否將該數字作為命令行參數? ,就可以了

像這樣從終端運行它

 java Exercise5 56

你得到

 Number is 56.0

如果您不知道在運行程序時給出的參數稱為“命令行參數”,例如java myprogname 5 6 7

主要是你

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM