2

我试图使用“get”方法从整数数组列表中获取值并将其与整数变量进行比较,但是当我尝试这样做时,编译器会抛出错误。我收到的代码和错误发布在下面。

Java 代码:

public boolean isExistGuess(int guess, ArrayList arraylist) {
    boolean found = false;
    for (int i=0; i < arraylist.size(); i++) {
        if (arraylist.get(i) == guess)
            found = true;
}
}

错误信息:

incompatible operand types Object and Int
4

3 回答 3

6

那是因为 ArrayList 在您的情况下不是通用的。

采用

ArrayList<Integer>

而是在方法签名中

于 2013-05-03T20:49:44.940 回答
3

您将ArrayList arraylist作为参数传递,因为您没有明确指定类型,默认情况下它的 arraylist 是 Object 。

所以,当你在做arraylist.get(i)时,你会得到一个对象。

尝试将整数的 ArrayList 作为参数传递

ArrayList<Integer> arraylist
于 2013-05-03T20:56:31.253 回答
1

当您不为列表提供类型时,它会成为“原始”类型 - 有效地视为ArrayList<Object>.

您可以更改您的方法以使用类型化列表(请注意,指定特定列表实现是一种不好的做法 - 只是List最好的):

public boolean isExistGuess(int guess, List<Integer> list) {

但是您的整个方法是不必要的,因为 Lists 有一个contains()方法可以完全按照您的编码完成。像这样使用它:

List<Integer> list = new ArrayList<Integer>();

填充你的欲望,然后:

if (list.contains(guess))
于 2013-05-03T21:01:20.290 回答