0

我正在实现方法 filter,它返回列表中长度大于 3 的所有字符串的子列表。在添加三个示例数据后,我在主函数中调用了 filter() - 你好 Sam Washington。输出应该是 Hel Sam Was。建议?

import java.util.ArrayList;

public class practice {
    private ArrayList<String> list = new ArrayList<String>();

    public ArrayList<String> filter() {
        for(int i=0; i<list.size(); i++) {
            if(list.get(i).length() > 3)
                list.set(i, list.get(i).substring(0, 3));
        }
        return list;
    }

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

        list1.add("Hello");
        list1.add("Sam");
        list1.add("Washington");

        filter();

        for(int i=0; i<list1.size(); i++)
            System.out.println(list1.get(i));
    }
}
4

2 回答 2

1

您在list没有filter使用返回值的情况下返回,或者实际上传入list1. 您可以list改为添加项目,或重做您的方法,如下所示:

public ArrayList<String> filter(ArrayList<String> toFilter) {
    for(int i=0; i<toFilter.size(); i++) {
        if(toFilter.get(i).length() > 3)
            toFilter.set(i, toFilter.get(i).substring(0, 3));
    }
    return toFilter;
}

然后将该行更改filter();list1 = filter();,以便捕获过滤结果。

于 2013-06-22T09:47:05.030 回答
0

您没有实例化练习类。您应该这样做并填写其list列表,然后调用过滤器。我只是在这里为您粘贴主要方法。

Practice practice = new Practice();
practice.list.add("Hello");
practice.list.add("Sam");
practice.list.add("Washington");

practice.filter();

for(int i=0; i<practice.list.size(); i++)
    System.out.println(practice.list.get(i));
于 2013-06-22T09:48:36.637 回答