老师这个为什么还会显示数组下标越界异常?

来源:1-4 二维数组的应用(下)

刘徽

2021-04-27 00:19:14

package com.imooc.array;

public class ArrayDemo5 {

public static void main(String[] args) {
//二维数组的声明
//三种声明形式
//声明int类型的二维数组
int[][] intArrray;
//声明float类型的二维数组
float floatArray[][];
//声明double类型的二维数组
double[] doubleArray[];
//创建一个三行三列的int类型的数组
intArrray = new int[3][3];
System.out.println("intArrray数组的第3行第2列的元素为:" + intArrray[0][1]);
//为元素复制为9
intArrray[1][2] = 9;
System.out.println("intArrray数组的第2行第3列的元素为:" + intArrray[1][2]);
//声明数组的同时进行创建
char[][] ch = new char[3][5];
//创建float类型的数组时,只指定行数
floatArray = new float[3][];
//System.out.println(floatArray[0][0]);
//每行相当于一个一维数组,需要创建
floatArray[0] = new float[3];//第一行有三列
floatArray[1] = new float[4];//第二行有四列
floatArray[2] = new float[5];//第三行有五列
System.out.println(floatArray[0][0]);
//System.out.println(floatArray[0][3]);//数组下标越界




//二维数组的初始化
int[][] num = {{1,2,3},{4,5,6},{7,8,9}};
System.out.println("num数组第1行第2列的元素为:" +num[0][1]);
System.out.println("num数组行数为:" +num.length);
System.out.println("num数组列数为:" +num[0].length);
System.out.println("num数组列数为:" +num[1].length);
System.out.println("num数组列数为:" +num[2].length);

int[][] num1 = {{78,98},{65,75,63},{98}};
System.out.println("num1数组第1行的列数为:" +num1[2].length);

//循环输出二维数组的内容
for(int i = 0;i < num1.length;i++) {
for(int j = 0;j < num1[i].length;j++) {
System.out.print(num[i][j] +" ");
}
System.out.println();
}


//求数组的累加和
int sum = 0;
for(int i = 0;i < num1.length;i++) {
for(int j = 0;i < num1[i].length;j++) {
sum += num1[i-1][j-1];
}
}
System.out.println("sum=" +sum);
}

}

这是老师上课讲的代码,我想练习一下求数组num1的累加和,就在数组的最后一部分,为什么这样照样还会报出数组下标越界异常?不管num1[i][j]还是num1[i-1][j-1]都一样。


运行结果:

http://img.mukewang.com/climg/6086e7e309b8609a21601440.jpg

写回答

1回答

好帮手慕小尤

2021-04-27

同学你好,1、ArrayIndexOutOfBoundsException是下标越界的异常,

2、当使用num1[i-1][j-1]时,第一次循环,i与j的值为-1,,但数组下标是从0开始,所以当下标为-1时,会出现下标越界的异常。

3、num1[i][j]出现异常是因,在内层循环中条件是,i < num1[i].length,则num1[0].length的长度为2,而i在循环中会为3,从而导致出现下标越界的异常。建议同学修改为for (int j = 0; j < num1[i].length; j++)。如下所示:

http://img.mukewang.com/climg/6087864909d462f007420226.jpg

祝学习愉快!

1

0 学习 · 16556 问题

查看课程