Java 如何在应用程序不崩溃的情况下声明和分配数组?
基本上,我正在为我13年级的课程设计一款适用于android的reversi应用程序,这段代码是用来设置黑板的,这里显示的是一个类位置数组。但是,运行时,应用程序会崩溃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
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++ ){
...