以下程序要求用户输入由整数组成。程序在输入字母x时退出。一旦程序结束,每个元素如果检查了arraylist。列表被分成几组坐标,即每个2个元素组合在一起。
例如,如果arraylist由[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);
}
}
答案 0 :(得分:1)
假设当前索引为b = 0且索引为c = 1;
myList.remove(b);
- &gt;删除你的第一个元素并修改 myList,使第二个元素成为第一个元素
myList.remove(c);
- &gt;这个逻辑上现在将删除修改后的myList的第2个元素..这是未修改的myList的第3个元素。
删除b ..
后,您可以将c减少1myList.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;
}
HTH!