簡體   English   中英

獲取參數時數組索引越界

[英]Array index out of bounds when getting arguments

到目前為止,我已經設法做各種簡單的事情,例如分配給變量、計算等等,編譯它以及所有這些好東西……

本節是關於使用ifelse語句的決策。 這是代碼:

public class Decision 
{
    public static void main(String[] args)
    {
        if (argv[0].equals("xyz"))
            System.out.println("Login successful");
        else 
            System.out.println("Login incorrect");  
    }
}

所以我在 CMD 中編譯程序並嘗試運行它,但我得到了這個:

線程“main”中的異常 java.lang.ArrayIndexOutOfBoundsException: 0 at Decision.main(Decision.java:5)

我知道代碼中的某處可能存在問題,但似乎無法找到它 - 我知道一旦我找到它就會很明顯!

您可能沒有輸入任何命令行參數,因此args數組的長度為 0,因此是ArrayIndexOutOfBoundsException

首先檢查長度,如果長度不至少為 1,則短路您的條件:

if (args.length >= 1 && args[0].equals("xyz"))

args[0]不會被評估,也不會拋出ArrayIndexOutOfBoundsException ,如果args.length >= 1false ,這使得整個條件false

您已在main()參數中聲明了args ,但檢查了argv[]

if (argv.length > 0 && argv[0].equals("xyz")) {
   …
} else {
   …
}

你為什么不添加一個檢查來查看你的數組是否為空? 類似的東西:

if(argv.length == 0)
{
    argv[0] = "";
}
//everything else...

暫無
暫無

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

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