-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

您的数组addmembers的大小 [0] 一旦创建就无法更改,为什么不使用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

不要将数组用于更多的数据量。如果你使用 ArrayList 会更好。我想纠正你的错误并给你这个答案。您已将字符串数组大小设置为 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

根据您的代码,它肯定会给您此错误,因为您正在初始化大小为 0 的数组。

取而代之的是,您可以使用ArrayList或者List<T>然后您将能够为其动态添加值。
所以用这两个代替数组是击球手。

于 2013-02-20T07:05:43.880 回答