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

标签 java arraylist

以下程序要求用户输入由整数组成的输入。输入字母 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/

相关文章:

java - 如何在 Scala 中替换缓冲图像中的最低有效位

java - 如何从代码中获取 Keystore 指纹

java - 错误 : illegal escape character - when trying to create a path

java - 如何在android中获取文件数组的大小?

android - 如何删除 ListView 中的数据,其数据来自android中的数组列表

android - 将对象的 ArrayList 转换为 JSON 以保存到 SQLITE 中

java - 如何通过 Telnet 发送字符串?

java - 我怎样才能返回我的主类?

Java:凸多边形的周长

java - 广义列表作为方法的参数