[英]Can't understand array error
我剛剛閱讀了AP Java書籍中的數組介紹部分,並嘗試了以下示例,但是出現錯誤,無法理解原因。
碼:
public static void arrayT(int i){
String[] alphabet = new String[5];
alphabet[0] = "a";
alphabet[1] = "c";
alphabet[2] = "x";
alphabet[3] = "b";
alphabet[4] = "d";
alphabet[5] = "e";
System.out.println(alphabet[i]);
}
主要:
public static void main(String [] args){
arrayT(2);
}
輸出:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
at Main.arrayT(Main.java:18)
at Main.main(Main.java:36)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
我究竟做錯了什么?
String[] alphabet = new String[5];
上面的語句分配一個容量為5的數組。有效指數為0、1、2、3和4。
索引5超出范圍。 從而:
alphabet[5] = "e";
引發異常。
String[] alphabet = new String[5];
創建一個長度為5的數組,即它的索引為0、1、2、3、4,其中恰好有五個元素。 您正在嘗試訪問索引5下不存在的元素。
定義的數組長度為5,且alphabet[5] = "e";
您正在嘗試將第6個元素添加到數組。 定義legnth為6的數組
String[] alphabet = new String[6];
或刪除最后一行代碼
alphabet[5] = "e"
這是因為您聲明了長度為5的數組,但是卻為其分配了6個值。
字母[5] =“ e”;。 這會導致“線程“主”中的異常java.lang.ArrayIndexOutOfBoundsException:5”
嘗試將數組的長度設置為長度6。這樣您將獲得正確的結果。
String []字母=新的String [6];
public static void arrayT(int i){
String[] alphabet = new String[5];
alphabet[0] = "a";
alphabet[1] = "c";
alphabet[2] = "x";
alphabet[3] = "b";
alphabet[4] = "d";
alphabet[5] = "e";
System.out.println(alphabet[i]);
}
在此聲明聲明時
String[] alphabet = new String[5];
然后ur字符串數組的大小為5,即0-4(包括0,則總共可以添加5個元素)
所以你必須將String數組的大小增加到6以添加6個元素
String[] alphabet = new String[6];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.