-3

似乎无法做到这一点。我错过了什么?

发现 3 个错误:

文件:K:\CustomerLister2.java [行:16] 错误:未定义 java.util.ArrayList 类型的方法 length() 文件:

K:\CustomerLister2.java [line: 18] 错误:表达式的类型必须是数组类型,但它解析为

java.util.ArrayList 文件:K:\CustomerLister2.java [行:20] 错误:表达式的类型必须是数组类型,但它解析为 java.util.ArrayList

import java.util.ArrayList;

public class CustomerLister2 {
    public static void main (String[] args) {
        ArrayList<String> name = new ArrayList<String>();

        name.add("Chris");
        name.add("Lois");
        name.add("Meg");
        name.add("Meg");
        name.add("Brain");
        name.add("Peter");
        name.add("Stewie");

        for (int i = 0;  i < name.length(); i++) {
            if (name[i].equals("Meg")) {
                name[i] = null;
                break;
            }     
            for(String names: name) {
                System.out.println(names);
            }
        }
    }
}
4

3 回答 3

5

未定义 java.util.ArrayList 类型的方法 length()

你要:

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

表达式的类型必须是数组类型,但它解析为 java.util.ArrayList

你要:

name.get(i)

name.remove(i);
name.set(i,"");

或者,您可以将其转换为数组:

String[] nameArray = name.toArray(new String[0]);

并使用nameArray代替name(和.legnth代替.length())。

于 2013-10-18T21:31:04.637 回答
2

Iterator如果您想从 an 中删除项目,请使用 an ,ArrayList否则在使用循环ConcurrentModificationException迭代集合时尝试删除元素时会发生afor

for (Iterator<String> iter = name.iterator(); iter.hasNext();) {
    if (iter.next().equals("Meg")) {
        iter.remove();
    }
}
于 2013-10-18T21:32:57.623 回答
1

查看ArrayList javadoc。

String s = "Meg";
while(name.contains(s))
  name.remove(s);
于 2013-10-18T21:32:32.183 回答