由于方法参数不匹配导致的编译错误

时间:2015-04-03 06:31:24

标签: java

在编译时,它不接受我定义方法的方式。它是一个用于查找矩阵的行列式和转置的代码。我需要有关在我的代码中调用方法的帮助。

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;
    }
}

1 个答案:

答案 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)