Java 数组越界异常?
好的,这是大学里的一个实验室。尝试接受用户输入的整数,将它们放入数组并打印出来 当我试图编译时,我遇到了一个错误 线程“main”java.lang.ArrayIndexOutOfBoundsException中出现异常:0 位于Lab3.main(Lab3.java:12)Java 数组越界异常?,java,arrays,Java,Arrays,好的,这是大学里的一个实验室。尝试接受用户输入的整数,将它们放入数组并打印出来 当我试图编译时,我遇到了一个错误 线程“main”java.lang.ArrayIndexOutOfBoundsException中出现异常:0 位于Lab3.main(Lab3.java:12) 公共类Lab3{ 公共静态void main(字符串[]args){ int[]First={}; 对于(int i=0;i,通过 int[] First = {}; // is the same as int[] Fir
公共类Lab3{
公共静态void main(字符串[]args){
int[]First={};
对于(int i=0;i,通过
int[] First = {};
// is the same as
int[] First = new int[0];
您正在创建一个包含0个元素的数组。然后尝试访问第一个元素
System.out.println("First is:"+First[0]); // access first element of empty array?
由于没有元素,如何访问它们?创建一个包含10个元素的数组
int[] First = new int[10];
如果您想要静态集合(不可调整大小)或使用列表
实现来拥有动态集合(可调整大小)
Java命名约定规定变量应以小写字母开头。请使用camelCase
int[] First = {};
初始化长度为0的数组
First[0]
不存在。请将长度作为声明的一部分或稍后提及
First=new int[10];//创建一个包含10个int的数组
请注意,上面将在First[11]
如果您不确定尺寸,可以改用
List first=new ArrayList();
首先,添加((int)Math.random()*10+1);
你应该使用列表,因为你的数组会随着时间的推移而增长。这就是为什么你不能先访问[i],因为你的数组是用一个空数组初始化的(并且会一直保持这样)。你也可以用一些元素初始化数组(不是你的用例)或者使用具有初始容量的new。您应该改用列表,因为您的数组将随着时间的推移而增长。初始化空数组(0个字段),然后尝试访问其第一个字段(索引0)。您也可以使用arrayList。它更灵活。ArrayIndexOutOfBoundsException
不会发生在该行中,因为它受循环保护。异常几乎会在代码末尾的println
语句中引发。谢谢!下次会知道。
int[] First = {};
List<Integer> first = new ArrayList<Integer>();
first.add((int)Math.random() *10 +1);