我正在实现方法过滤器,它返回列表中长度大于3的所有字符串的子列表。在添加三个样本数据后,我在main函数中调用了filter() - Hello 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));
}
}
答案 0 :(得分:1)
您从[{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();
,以便捕获过滤结果。
答案 1 :(得分:0)
您没有实例化类Practice。您应该这样做并填写其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));