当两个矩阵具有相同的行数和列数时,代码可以正常工作。喜欢例如。 3x3 和 3x3 矩阵乘法工作正常。
尝试乘以不同大小的矩阵时出现以下错误。尝试将 2x3 矩阵和 3x4 矩阵相乘,但出现错误。
**Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1
at arrayprac.ArrayPrac.main(ArrayPrac.java:85)
38C:\Users\a807771\AppData\Local\NetBeans\Cache\17\executor-snippets\run.xml:111: The following error occurred while executing this line:
C:\Users\a807771\AppData\Local\NetBeans\Cache\17\executor-snippets\run.xml:68: Java returned: 1
BUILD FAILED (total time: 12 seconds)**
package arrayprac;
import java.util.Scanner;
public class ArrayPrac {
public static void main(String[] args) {
System.out.println("Enter number of rows for matrix 1: ");
int row1,col1,row2,col2;
Scanner sc=new Scanner(System.in);
row1=sc.nextInt();
System.out.println("Enter number of Columns for matrix 1: ");
col1=sc.nextInt();
System.out.println("Enter number of rows for matrix 2: ");
row2=sc.nextInt();
System.out.println("Enter number of Columns for matrix 2: ");
col2=sc.nextInt();
int a[][]=new int[row1][col1];
int b[][]=new int[row2][col2];
for(int i=0;i<row1;i++)
{
for(int j=0;j<col1;j++)
{
System.out.println("Enter element for 1st matrix: ");
a[i][j]=sc.nextInt();
}
}
for(int i=0;i<row2;i++)
{
for(int j=0;j<col2;j++)
{
System.out.println("Enter element for 2nd matrix: ");
b[i][j]=sc.nextInt();
}
}
System.out.println("Below is the 1st matrix: \n");
for(int i=0;i<row1;i++)
{
for(int j=0;j<col1;j++)
{
System.out.print(a[i][j]);
}
System.out.println("");
}
System.out.println("Below is the 2nd matrix: \n");
for(int i=0;i<row2;i++)
{
for(int j=0;j<col2;j++)
{
System.out.print(b[i][j]);
}
System.out.println("");
}
if(col1!=row2)
{
System.out.println("Matrix multiplication impossible!");
System.exit(0);
}
else{
int c[][]=new int[row1][col2];
for(int i=0;i<row1;i++)
{
for(int j=0;j<col2;j++)
{
c[i][j]=0;
for(int k=0;k<row2;k++)
{
c[i][j]=c[i][j]+a[i][k]*b[k][j];
}
}
}
System.out.println("Below is the result matrix: \n");
for(int i=0;i<col1;i++)
{
for(int j=0;j<row2;j++)
{
System.out.print(c[i][j]);
}
System.out.println("");
}
}
}
}
当两个矩阵具有相同的行数和列数时,代码可以正常工作。喜欢例如。 3x3 和 3x3 矩阵乘法工作正常。
尝试乘以不同大小的矩阵时出错。尝试将 2x3 矩阵和 3x4 矩阵相乘,但出现错误。
用于打印新矩阵的双 for 循环中的迭代边界应与先前用于乘法的 for 循环相匹配。我认为您代码中的这种更正将使它起作用。
for(int i=0;i<row1;i++)//Here
{
for(int j=0;j<col2;j++)//And here
{
System.out.print(c[i][j]);
}
System.out.println("");
}
一般来说,在这种情况下,如果您在出现问题的行中设置断点,然后使用调试器,将会有所帮助。