我试图从用户那里获取未知数量的整数(直到用户输入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());
}
}
}
答案 0 :(得分:2)
您使用的是raw type
,因此列表的类型为Object
,无法与int
(0
进行比较,因此请使用
ArrayList<Integer> list = new ArrayList<>();
Read , What is a raw type and why shouldn't we use it?
As mentioned:您在list
中没有添加任何元素,调用get
会导致崩溃,因为
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());
}
}
}