gpt4 book ai didi

java - 在java中比较和删除数组列表中的2个连续元素

转载 作者:行者123 更新时间:2023-12-01 11:49:06 24 4
gpt4 key购买 nike

以下程序要求用户输入由整数组成的输入。输入字母 x 后,程序退出。程序结束后,将检查数组列表中的每个元素。列表被分为坐标组,即每个2 个元素组合在一起。

例如,如果数组列表由 [2,3,4,5,7,8] 组成,则元素将组合在一起为 (2,3) (4,5) 和 (7,8)。这些是然后一起比较。如果左侧元素比右侧元素大,则删除这两个元素。我有以下代码,可以识别配对是否可接受,但无法删除元素。

import java.util.*;
public class ArrayLists {
public static void main(String[]args)
{
ArrayList<Integer> myList=new ArrayList<Integer>();
Scanner a=new Scanner(System.in);
for(int i=0;i>=0;i++)
{
System.out.print("Enter whole number.Enter x to quit: ");
if(a.hasNextInt())
{


int userinput=a.nextInt();
myList.add(userinput);

}
else if(a.next().equals("x"))
{
break;
}
}
//System.out.println(myList);


for(int b=0;b<myList.size();b+=2) //Inspects the arraylist starting from index 0.
{
int c=b+1; //Inspects the list,starting from index 1.


if(myList.get(b)>myList.get(c))
{
System.out.println("Crap!");
//System.out.println("Index"+b+","+c);


myList.remove(b);
myList.remove(c);

}
else if(myList.get(b)<myList.get(c))
{
System.out.println("Goodjob!");

}
else
{
System.out.println("GoodJob!");
}
c=c+1;
}
System.out.println(myList);
}
}

最佳答案

假设 b 的当前索引 = 0,c 的索引 = 1;

myList.remove(b); -> 删除第一个元素,并且修改 myList,使第二个元素现在变成第一个元素

myList.remove(c); -> 从逻辑上讲,这现在将删除修改后的 myList 的第二个元素..即未修改的 myList 的第三个元素。

删除 b 后,只需将 c 减 1..

myList.remove(b);
c--;
myList.remove(c);

而且你的迭代也是错误的。仅当 myList 未修改时才增加 b。

你应该这样做:

for(int b=0;b<myList.size();)

还有这个:

else if(myList.get(b)<myList.get(c))
{
System.out.println("Goodjob!");
b+=2;
}

呵呵!

关于java - 在java中比较和删除数组列表中的2个连续元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28923077/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com