无法使用Arraylist.get方法并且它显示"不兼容的操作数类型Object和int"

时间:2017-11-18 06:36:13

标签: java arraylist integer

我试图从用户那里获取未知数量的整数(直到用户输入0),并计算输入的每个整数的出现次数。我想,在我完成整数后,我必须将它们存储在一个数组中。我做了一些研究,并意识到创建一个具有未指定长度的数组的唯一方法,ArrayList是唯一的方法。但我的这部分代码显示错误:

import java.util.Scanner;

import java.util.ArrayList;

public class IntegersOccurence {

    public static void main(String[] args) {
        Scanner input = new Scanner (System.in);

        System.out.print("Enter the integers between 1 and 100: ");
        ArrayList list = new ArrayList();
        System.out.println(list.get(0));
        //eclipse is showing an error in the line right below
        while (list.get(list.size() - 1) != 0) {
            list.add(input.nextInt());
        }   
    }
}

3 个答案:

答案 0 :(得分:2)

您使用的是raw type,因此列表的类型为Object,无法与int0进行比较,因此请使用

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

Read , What is a raw type and why shouldn't we use it?

As mentioned:您在list中没有添加任何元素,调用get会导致崩溃,因为

From docs

  

IndexOutOfBoundsException - 如果索引超出范围(索引&lt; 0 ||   index >= size()

此处index>=size()为真(列表大小为0,没有元素)因此异常

答案 1 :(得分:0)

更改以下行:

ArrayList list = new ArrayList();

要:

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

默认情况下,列表的类型是Object,通过定义数据类型,我们避免运行时类型错误,并且在编译时进行检查。

答案 2 :(得分:0)

您最好使用此代码:

import java.util.List;
import java.util.Scanner;
import java.util.ArrayList;

public class IntegersOccurence {

    public static void main(String[] args) {
        Scanner input = new Scanner (System.in);

        System.out.print("Enter the integers between 1 and 100: ");
        List<Integer> list = new ArrayList<Integer>();
        list.add(input.nextInt());
        System.out.println(list.get(0));
        //eclipse is showing an error in the line right below
        while (list.get(list.size() - 1) != 0) {
            list.add(input.nextInt());
        }   
    }
}