Java 如何在应用程序不崩溃的情况下声明和分配数组?

Java 如何在应用程序不崩溃的情况下声明和分配数组?,java,android,arrays,object,loops,Java,Android,Arrays,Object,Loops,基本上,我正在为我13年级的课程设计一款适用于android的reversi应用程序,这段代码是用来设置黑板的,这里显示的是一个类位置数组。但是,运行时,应用程序会崩溃 Position[][] board = new Position[7][7]; //declaring the board// for(int n = 0; n < 8; n ++){ ... for(int i = 0; i < 8; i++ ){ final Im

基本上,我正在为我13年级的课程设计一款适用于android的reversi应用程序,这段代码是用来设置黑板的,这里显示的是一个类位置数组。但是,运行时,应用程序会崩溃

Position[][] board = new Position[7][7]; //declaring the board//

for(int n = 0; n < 8; n ++){

        ...


    for(int i = 0; i < 8; i++ ){
        final ImageView button = new ImageView(this);

        final int countN = n;
        final int countI = i;

        board[countI][countN].isPositionEmpty = true; //assigning a value//
Position[]board=新职位[7][7]//宣布董事会//
对于(int n=0;n<8;n++){
...
对于(int i=0;i<8;i++){
最终图像视图按钮=新图像视图(本);
最终整数n=n;
最终整数i=i;
线路板[countI][countN].isPositionEmpty=true;//赋值//

任何帮助都将不胜感激!!提前感谢!

您只分配了一个7x7阵列,但您正试图将其用作8x8阵列

更改为使用:

Position[][] board = new Position[8][8];
或者优选地,具有在多个位置使用的常数:

private static final int BOARD_SIZE = 8;

...
Position[][] board = new Position[BOARD_SIZE][BOARD_SIZESIZE];

for (int i = 0; i < BOARD_SIZE; i++)
{
    ...
}

创建一个包含
size
元素的数组;有效索引的范围为0到
size-1

您还必须取消矩阵的每个索引

for(int i = 0; i < 8; i++ ){
        board[countI][countN] = new Position();
        board[countI][countN].isPositionEmpty = true; //assigning a value//
}
for(int i=0;i<8;i++){
董事会[countI][countN]=新职位();
线路板[countI][countN].isPositionEmpty=true;//赋值//
}

for循环从0到7,实际上是8个单元格。因此需要8个位置对象

Position[][] board = new Position[8][8]
或者,如果你希望它是一个7乘7的董事会,你需要停止在第6指数

for (int i =0; i <7 ; i++)
for(int i=0;i
//错误:
职位[]董事会=新职位[7][7];
对于(int i=0;i<8;i++){
...
//更好:
职位[]董事会=新职位[8][8];
对于(int i=0;i<8;i++){
...
//最佳:
职位[]董事会=新职位[8][8];
对于(int i=0;i
附言:


您不仅需要初始化数组(为“容器”的每一行和每一列分配空间);您*还*需要初始化数组的每一个元素(例如,“数组[i][j]=new Position()”)。

Ahh!原以为它包含零!我现在就测试它!已经在程序的其他地方完成了,但无论如何,谢谢!
for (int i =0; i <7 ; i++)
// Bad:
Position[][] board = new Position[7][7];
for(int i = 0; i < 8; i++ ){
  ...

// Better:
Position[][] board = new Position[8][8];
for(int i = 0; i < 8; i++ ){
  ...

// Best:
Position[][] board = new Position[8][8];
for(int i = 0; i < board[0].length; i++ ){
  ...