Java Arraylist:method-won';t打印数组中的最后一个元素
该方法不打印数组中的最后一个奇数值。我尝试了array.size()-1,但没有成功。我做错了什么Java Arraylist:method-won';t打印数组中的最后一个元素,java,arraylist,methods,Java,Arraylist,Methods,该方法不打印数组中的最后一个奇数值。我尝试了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; inde
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);
}
}
}
}
import java.util.ArrayList;
公共类赔率
{
公共静态void main(字符串[]args)
{
ArrayList赔率=新ArrayList();
对于(int index=1;index,您应该在代码中解决以下问题:
不要在循环中调用removevens(赔率)
。在列表初始化后调用它
不要显式减小i
的值
您应该按照以下步骤进行操作:
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);
System.out.println(odds);
}
public static void removeEvens(ArrayList<Integer> array) {
for (int i = 0; i < array.size(); i++) {
if (array.get(i) % 2 == 0) {
array.remove(i);
}
}
}
}
您应该在代码中解决以下问题:
不要在循环中调用removevens(赔率)
。在列表初始化后调用它
不要显式减小i
的值
您应该按照以下步骤进行操作:
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);
System.out.println(odds);
}
public static void removeEvens(ArrayList<Integer> array) {
for (int i = 0; i < array.size(); i++) {
if (array.get(i) % 2 == 0) {
array.remove(i);
}
}
}
}
在进行这种修改时,我倾向于使用显式迭代器
List<Integer> odds = new ArrayList<>(List.of(1,2,3,4,5,6,7));
Iterator<Integer> it = odds.iterator();
while(it.hasNext()) {
if (it.next() % 2 == 0) {
it.remove();
}
}
这两个结果都是正确的
[1,3,5,7]
在进行这种修改时,我倾向于使用显式迭代器
List<Integer> odds = new ArrayList<>(List.of(1,2,3,4,5,6,7));
Iterator<Integer> it = odds.iterator();
while(it.hasNext()) {
if (it.next() % 2 == 0) {
it.remove();
}
}
这两个结果都是正确的
[1,3,5,7]
“对于(…,i
”-注意到什么?没有线索,我尝试将for循环中的该符号和小于符号调整为无效@Turing85试图指出的是,您的i永远不会成为array.size(),因为在第一个for循环中,您说它是否等于或大于array.size(),请退出循环。另外,您在for循环中从i中减去i,这不是非法的,但就我而言,这是一个糟糕的做法。为什么不干脆这样做:赔率.removeIf(i->i%2==0)
?“for(…,i
“-注意到什么了吗?一点线索也没有,我尝试将for循环中的该符号和小于符号调整为无效@Turing85试图指出的是,您的I永远不会成为array.size(),因为在第一个for循环中,您说它是否等于或大于array.size(),退出循环。另外,你在for循环中从i中减去i,这不是非法的,但就我而言,这是一个糟糕的做法。为什么不干脆这样做:几率。移除(i->i%2==0)
?