在ArrayList

时间:2016-05-05 04:06:12

标签: java arraylist

当我尝试在我的ArrayList中找到+删除一个超过两位数的值时,我的方法返回-1(如果找不到该值)。但是,对于低于100的值,它可以正常工作。要使其工作,请键入ArrayList中值的深度(索引)以及要查找的值。当您找到它们时,它会从数组中删除该值。由于某种原因,当值为三位或更多位时,if语句不起作用。

这是我的代码:

import java.util.*;

public class EP {

    public static List < Integer > items = new ArrayList < Integer > (Arrays.asList(12, 13, 48, 42, 38, 2827, 827, 828, 420));

    public static void main(String[] args) {
        moreLines();

        System.out.println("Exam List");

        for (Integer i: items) {
            System.out.println(i);
        }

        moreLines();

        Scanner scan = new Scanner(System.in);
        System.out.println("Enter depth");

        int depth = scan.nextInt();
        moreLines();

        System.out.println("Enter value");
        int value = scan.nextInt();

        moreLines();

        System.out.println(mark(depth, value));
    }

    public static int mark(int depth, int value) {
        int ret = -1; //This ensures -1 is returned if it cannot find it at the specified place

        for (int i = 0; i < items.size(); i++) {
            System.out.println(items.get(i));

            /** This is the condition for the value deletion
             *  If depth and value are correct, it deletes the value
             */
            if (items.get(depth) == (Integer) value) {
                ret = value;
                items.remove(items.get(depth)); //removes ArrayList Item
            }
        }

        moreLines();

        System.out.println("Updated Exam List"); //Shows ArrayList with deleted item

        for (Integer j: items) {
            System.out.println(j);
        }

        moreLines();

        return ret;
    }

    public static void moreLines() { //Just there for debugging, makes spaces when you run it. 
        System.out.println("   ");
        System.out.println("   ");
    }
}

请原谅可怜的评论和布局。在StackExchange中很难正确使用它,复制和粘贴效果不好,所以我不得不手动隔离它。谢谢:))

2 个答案:

答案 0 :(得分:2)

问题:

if(items.get(depth) == (Integer)value)

不应将值强制转换为整数。

解决方案:

if(items.get(depth) == value)

简单地取出演员阵容,有条件的人将完成其余的工作。

答案 1 :(得分:0)

我认为问题不在于数字的数字,而在于你所有的3位数字都在最后,而是你要从列表中删除更改深度(索引)的事实。原始列表中的剩余项目。如果你正在迭代它,那么移除一个项目并不是一个好主意。