永发信息网

Exception in thread "main" java.lang.Array Index Out Of Bounds Exception.....

答案:3  悬赏:0  手机版
解决时间 2021-12-29 14:29
  • 提问者网友:未信
  • 2021-12-28 14:52
小弟初学Java 看着书编了个算矩阵相乘的算法 算22*22之类的都可以 但是如果换成34*45的这种稍微大一点的 就会出现数组越界的情况。。求解啊。。
import java.util.Scanner;
public class JavaApplication1 {

public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
System.out.println("输入第一个矩阵的行与列");
int N1 = in.nextInt();
int M1 = in.nextInt();
int[][] a = new int[N1][M1];
System.out.println("行:"+N1+"列:"+M1);
System.out.println("输入第二个矩阵的行与列");
int N2 = in.nextInt();
int M2 = in.nextInt();
int[][] b = new int[N2][M2];
System.out.println("行:"+N2+"列:"+M2);
int[][] c = new int[M1][N2];
if (M1 == N2){
enterMatrix(a,N1,M1);
enterMatrix(b,N2,M2);
printMatrix(a,N1,M1);
System.out.println("*");
printMatrix(b,N2,M2);
MulMatrix(a,N1,M1,b,N2,M2,c);
System.out.println("Result:");
printMatrix(c,N1,M2);
}
else
{
System.out.println("两个矩阵不能相乘!");
}

}
public static void enterMatrix(int[][]m,int h,int l)
{
for(int i = 0; i < h ; i++ )
{
for(int j = 0; j {
m[i][j] = (int) Math.round(Math.random()*10);
}
}
}
public static void printMatrix(int m[][],int h,int l)
{
for(int i = 0;i {
for(int j = 0;j {
System.out.printf(" "+m[i][j]);
}
System.out.println();
}
}
public static void MulMatrix(int[][]a,int N1,int M1,int[][]b,int N2,int M2,int[][]c)
{
for(int i = 0;i {
for(int j = 0;j {
//c[i][j] = 0;
for(int k = 0;k {
//c[i][j] = 0;
c[i][j]+=a[i][k]*b[k][j];
}
}
}
}
}
最佳答案
  • 五星知识达人网友:街头电车
  • 2021-12-28 15:00
这个程序你只需把所有FOR循环里面的判断条件改为里面的<改为<=就可以了;
由于你是<,数组下标就出现了与数组长度相等的下标,因此报了 java.lang.Array Index Out Of Bounds Exception(数组越界异常)
全部回答
  • 1楼网友:duile
  • 2021-12-28 17:27
可能是你使用了int长度超过了限定长度,试试用Integer对象
  • 2楼网友:愁杀梦里人
  • 2021-12-28 16:06
数组越界
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯