4 回答
TA贡献2012条经验 获得超12个赞
TA贡献1833条经验 获得超4个赞
如果您阅读 的文档List.remove(),您会看到 index 之后的元素i向左移动。这意味着在您当前的实现中,每次删除后都会跳过一个元素,因此如果相邻的两个元素大于 5,则只会删除其中一个。
您可以做的是在删除带有i--;. 您的代码将因此变为
public static void main(String args[]) throws IOException{
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(3);
list.add(4);
list.add(56);
list.add(6);
for (int i = 0; i < 4; i++){
String s = reader.readLine();
list.add(Integer.parseInt(s));
}
for (int i = 0; i < list.size(); i++){
if (list.get(i) > 5) {
list.remove(i);
i--;
}
}
System.out.println(list);
}
这将输出[3, 4, 1],删除所有大于 5 的数字。
TA贡献1793条经验 获得超6个赞
如果您从数组末尾开始检查,则它正在工作。
public static void main(String args[]) throws IOException{
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(3);
list.add(4);
list.add(56);
list.add(6);
for (int i = 0; i < 4; i++){
String s = reader.readLine();
list.add(Integer.parseInt(s));
}
for (int i = list.size() - 1; i >=0 ; i--){
if (list.get(i) > 5)
list.remove(i);
}
System.out.println(list);
}
10 11 12 1
[3, 4, 1]
TA贡献1811条经验 获得超6个赞
我想这是了解如何从列表中删除的练习,但除此之外,这是您在添加之前可以检查的方法:
public static void main(String args[]) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
ArrayList<Integer> list = new ArrayList<Integer>();
for (int i = 0; i < 4; i++){
System.out.println("type a number: ");
String s = reader.readLine();
int j = Integer.parseInt(s);
if(j < 5) {
list.add(Integer.parseInt(s));
}
}
System.out.println(list);
}
添加回答
举报
