在编译时,它不接受我定义方法的方式。它是一个用于查找矩阵的行列式和转置的代码。我需要有关在我的代码中调用方法的帮助。
import java.util.*;
class CodeMet5 {
//public int transpose(double a[n][n])
public static void main(String args[]) {
Scanner c=new Scanner(System.in);
System.out.println("Enter the matrix order : ");
int n = c.nextInt();
double a[][]=new double[n][n];
System.out.println("Enter the matrix elements one by one as a11,a12,a13,..a21,a22,..");
for(int i=0;i<n;i++) {
for(int j=0;j<n;j++) {
a[i][j]=c.nextDouble();
}
}
System.out.println("The matrix is : \n");
for(int i=0;i<n;i++) {
for(int j=0;j<n;j++) {
System.out.print(a[i][j]+" ");
}
System.out.println("\n");
}
double determinant=det(a[n][n]);
System.out.println("The transpose of this matrix is: \n");
for(int i=0;i<n;i++) {
for(int j=i+1;j<n;j++) {
double t=a[i][j];
a[i][j]=a[j][i];
a[j][i]=t;
}
}
for(int i=0;i<n;i++) {
for(int j=0;j<n;j++) {
System.out.print(a[i][j]+" ");
}
System.out.println("\n");
}
System.out.println("determinant = "+determinant);
}
public static double formDetMat(double A[p][p],int l,int m) {
int n=p-1;
int r=l+1;
int s=0;
double a[][]=new double[n][n];
for(int i=0;i<n;i++) {
for(int j=0;j<n;j++) {
if(s!=m) {
a[i][j]=A[r][s];
s++;
} else {
a[i][j]=A[r][s+1];
s+=2;
}
}
r++;
}
return a[][];
}
public static double det(double b[p][p]) {
if(p>2) {
double deter=0;
for(j=0;j<p;j++) {
double tired=formDetMat(b[p][p],0,j));
deter+=Math.pow(-1,2+j)*b[0][j]*det(tired);
}
} else if(p==2) {
double deter=b[0][0]*b[1][1]-b[0][1]*b[1][0];
}
return deter;
}
}
答案 0 :(得分:3)
您应该将整个矩阵传递给您的方法,而不是矩阵的单个单元格(尤其不是不存在的单元格)。
例如:
变化
double determinant=det(a[n][n])
到
double determinant=det(a);
你的方法中也有错误&#39;签名。
应该是:
public static double det(double b[][])
或
public static double det(double[][] b)