簡體   English   中英

無法理解數組錯誤

[英]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.

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