-2

実行時に配列にデータを追加したいのですが、範囲外のインデックス例外が発生しています。

String addmembers[] = new String[0];

for (int i=0; i<contactClassList.size(); i++) {
    MyClass values = contactClassList.get(i);
    String name = values.getUsernameEmail();
    Boolean isChecked = values.isChecked;
    if (isChecked) {
        addmembers[addmembers.length] = name;
    }
    System.out.println("Value of Array===" + addmembers.length);
}
4

5 に答える 5

7

配列に追加することはできません。作成すると、そのサイズは固定されます。ArrayListを使用してを呼び出した方がよいでしょうadd

List<String> newMembers = new ArrayList<String>();
for (MyClass entry : contactClassList) {
    if (entry.isChecked) {
        newMembers.add(entry.getUsernameEmail());
    }
}
System.out.println(newMember.size());
于 2013-02-20T06:57:23.707 に答える
1

より多くのデータ量に配列を使用しないでください。ArrayList を使用した方がよいでしょう。私はあなたの過ちを正し、あなたにこの答えを与えたいと思います. String 配列のサイズを 0 に設定し、要素を追加しようとしましたが、これは不可能です。したがって、上記のコードで必要な配列サイズを宣言しますcontactClassList.size()

                String addmembers[] = new String[contactClassList.size()];

                for(int i=0;i<contactClassList.size();i++){

                    MyClass values = contactClassList.get(i);

                    String name = values.getUsernameEmail();
                    Boolean isChecked = values.isChecked;

                    if(isChecked){

                        addmembers[addmembers.length]=name;
                    }

                    System.out.println("Value of Array==="+addmembers.length);
于 2013-02-20T07:03:56.383 に答える
1

あなたの配列は size[0] であり、一度作成すると変更できません。動的サイズとしてaddmembersを使用しないのはなぜですかList

List<String> addmembers = new ArrayList<String>();

  for(int i=0;i<contactClassList.size();i++){
    MyClass values = contactClassList.get(i);

    String name = values.getUsernameEmail();
    Boolean isChecked = values.isChecked;

    if(isChecked){
      addmembers.add(name);
    }

  System.out.println("Value of Array==="+addmembers.length);

}

このようなものがあなたの問題を解決します。

于 2013-02-20T06:59:11.870 に答える
1

ArrayList は、このような問題に適したデータ構造です。配列を使用する必要があり、成長可能なものとして必要なものを使用する場合は、そのようなソリューションを使用します Javaで配列を成長させる最もメモリ効率の良い方法は?

于 2013-02-20T06:59:48.150 に答える
1

あなたのコードによると、配列を0サイズで初期化しているため、このエラーが確実に発生します。

これの代わりに使用するArrayListList<T>、動的に値を追加することができます。
したがって、配列の代わりにこの 2 つを使用するのはバッターです。

于 2013-02-20T07:05:43.880 に答える