如何在Java中全局声明数组?
我有一个java程序,它将两个矩阵相乘。我在全局错误声明中发现了一些错误。 这是我的密码如何在Java中全局声明数组?,java,arrays,Java,Arrays,我有一个java程序,它将两个矩阵相乘。我在全局错误声明中发现了一些错误。 这是我的密码 import java.util.Scanner; /**WAP in Java for multiplication of two (m*n) matrices. */ public class PracProg_7{ static int m,n,p; static int a[][]; static int b[][];
import java.util.Scanner;
/**WAP in Java for multiplication of two (m*n) matrices. */
public class PracProg_7{
static int m,n,p;
static int a[][];
static int b[][];
static int c[][];
public static void main(String[] args){
getMatrix();
solveMatrix();
display();
}
static void getMatrix(){
int i,j;
System.out.println("Enter size of matrix || Enter m,n,p");
Scanner sc = new Scanner(System.in);
m = sc.nextInt();
n = sc.nextInt();
p = sc.nextInt();
int a[][] = new int [m][n];
int b[][] = new int [n][p];
System.out.println("Enter matrix A");
for(i=0;i<m;i++){
for(j=0;j<n;j++){
a[i][j] = sc.nextInt();
}
}
System.out.println("Enter matrix B");
for(i=0;i<n;i++){
for(j=0;j<p;j++){
b[i][j] = sc.nextInt();
}
}
}
static void solveMatrix(){
int i,j,k;
int c[][] = new int [m][p];
for(i=0;i<m;i++) {
for (j = 0; j < p; j++) {
c[i][j] = 0;
for (k = 0; k < n; k++) {
try{
c[i][j] += a[i][k] * b[k][j];
}
catch (ArrayIndexOutOfBoundsException e){System.out.println("Error" + e);}
}
}
}
}
static void display(){
int i,j;
for(i=0;i<m;i++){
for(j=0;j<p;j++){
System.out.print(c[i][j] + "\t");
}
System.out.println();
}
}
}
这是因为在getMatrix()方法中,没有使用数组对象实例变量a和b,而是创建a和b数组的新本地副本 您需要在getMatrix()中更改a和b,如下所示:
a= new int [m][n];
b = new int [n][p];
您可以在下面找到更新的getMatrix()方法:
static void getMatrix(){
int i,j;
System.out.println("Enter size of matrix || Enter m,n,p");
Scanner sc = new Scanner(System.in);
m = sc.nextInt();
n = sc.nextInt();
p = sc.nextInt();
a= new int [m][n];
b = new int [n][p];
System.out.println("Enter matrix A");
for(i=0;i<m;i++){
for(j=0;j<n;j++){
a[i][j] = sc.nextInt();
}
}
System.out.println("Enter matrix B");
for(i=0;i<n;i++){
for(j=0;j<p;j++){
b[i][j] = sc.nextInt();
}
}
}
static void getMatrix(){
int i,j;
System.out.println(“输入矩阵的大小| |输入m,n,p”);
扫描仪sc=新的扫描仪(System.in);
m=sc.nextInt();
n=sc.nextInt();
p=sc.nextInt();
a=新整数[m][n];
b=新整数[n][p];
System.out.println(“输入矩阵A”);
对于(i=0;iAdd错误消息,请回答您的问题。您在函数阴影静态数组中声明a/b/c数组,请从函数内部声明中删除int[][]talex的可能副本我是初学者请不要否决我的问题
static void getMatrix(){
int i,j;
System.out.println("Enter size of matrix || Enter m,n,p");
Scanner sc = new Scanner(System.in);
m = sc.nextInt();
n = sc.nextInt();
p = sc.nextInt();
a= new int [m][n];
b = new int [n][p];
System.out.println("Enter matrix A");
for(i=0;i<m;i++){
for(j=0;j<n;j++){
a[i][j] = sc.nextInt();
}
}
System.out.println("Enter matrix B");
for(i=0;i<n;i++){
for(j=0;j<p;j++){
b[i][j] = sc.nextInt();
}
}
}