【发布时间】:2020-05-05 08:37:53
【问题描述】:
该方法不打印数组中的最后一个奇数值。我尝试了 array.size() - 1,但无济于事。我做错了什么?
import java.util.ArrayList;
public class Odds
{
public static void main(String[] args)
{
ArrayList<Integer> odds = new ArrayList<Integer>();
for(int index = 1; index <101; index++)
{
odds.add(index);
removeEvens(odds);
}
//call removeEvens on the array above!
}
public static void removeEvens(ArrayList<Integer> array)
{
for(int i = 0; i < array.size(); i++)
{
if (array.get(i)%2 == 0)
{
array.remove(i);
i--;
System.out.println(array.get(i));
}
if(i==array.size())
{
System.out.println(array.size() - 1);
}
}
}
}
【问题讨论】:
-
"
for(..., i < array.size();...) { ... if(i==array.size()) { ... } }" - 注意到什么了吗? -
没有线索,我尝试调整 for 循环中的那个符号和小于号无济于事
-
@Turing85 试图指出的是你的 i 永远不会变成 array.size(),因为在第一个 for 循环中你说如果它等于或大于 array.size(),得到在循环之外。
-
你也在 for 循环中从 i 中减去,这不是非法的,但就我现在而言,这是一种不好的做法
-
为什么不干脆做:
odds.removeIf(i -> i % 2 == 0)?