[英]Array index out of bounds when getting arguments
到目前為止,我已經設法做各種簡單的事情,例如分配給變量、計算等等,編譯它以及所有這些好東西……
本節是關於使用if
和else
語句的決策。 這是代碼:
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 >= 1
是false
,這使得整個條件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.