基本上,我在第19行得到了一个ArrayOutOfBounds异常。我试着只是在没有赋值的情况下(没有指定wile循环)来修改数组的内容但是仍然有同样的错误,任何人都有修复?
package com.company;
import java.util.Random;
public class Main {
static int[][] Placer = new int[2][2]; //create multi-dimenstional array to hold the numbers
public static void main(String[] args) {
Random random = new Random(); //intiallise new Random object
int intsAssigned = 0; //will keep track of the ammount of ints assigned.
//Assign all of the index's a random int, not the most practical way.
while(intsAssigned != 9){
int currentColumn = 0;
Placer[currentColumn][0] = random.nextInt(20);
Placer[currentColumn][1] = random.nextInt(20);
Placer[currentColumn][2] = random.nextInt(20);
currentColumn++;
intsAssigned + 3;
}
printNumbers();
}
//Print all of the index's
public static void printNumbers(){
int numbersPrinted = 0;
int currentColumn = 0;
int currentRow = 0;
while(numbersPrinted != 9){
System.out.println(Placer[currentColumn][currentRow]);
System.out.println(Placer[currentColumn][++currentRow]);
System.out.println(Placer[currentColumn][currentRow + 2]);
currentColumn++;
}
}
}
答案 0 :(得分:4)
Placer是int[2][2]
...但您正在尝试访问Placer[currentColumn][2]
。对于大小为2的数组,您只能访问两个索引:0和1。
也许您希望Placer
成为int[3][3]
?
答案 1 :(得分:3)
在Java索引中基于零,这意味着数组:new int[2][2];
将有两行和两列,并且每个列都将被索引为0..1。
一般来说,如果你声明和数组,例如ints:new int[n]
,你的索引应该从0到n-1(0,..,n-1)。多维数组也是如此。大小为m的每个维度将从0到m-1(0,...,m-1)索引。
答案 2 :(得分:1)
intsAssigned + 3;
不会修改变量。你的意思是这样做:
intsAssigned += 3;
此外,此static int[][] Placer = new int[2][2];
会为行和列创建长度 2,因此这些的索引位置只会是0
和1
我认为您想将其更改为:
static int[][] Placer = new int[3][3];
此条件:while(numbersPrinted != 9)
将始终为真,因为您永远不会增加numbersPrinted
答案 3 :(得分:1)
除了dcsohl / user987339提到的内容之外,您的代码中还有许多其他错误。
你似乎永远不会增加数字印刷,所以虽然不会退出。相反,currentColumn将继续上升,直到它超出范围。只需加入
numbersPrinted += 3;
在第二个循环中增加currentColumn后应该修复。
此外,currentColumn在第一个循环中被初始化为0,因此无论何时使用它都不会是0。你应该移动
int currentColumn = 0;
到第一次之前。
答案 4 :(得分:0)
它没有初始化。
这是一个数组
的例子int [] x = {1,3}
sum = x [0] + x [1]。