java - 由于方法参数不匹配而导致编译错误

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

最佳答案

您应该将整个矩阵传递给您的方法,而不是矩阵的单个单元格(尤其是不存在的单元格)。

例如:

改变

double determinant=det(a[n][n])

double determinant=det(a);

方法签名也有错误。

应该是:

public static double det(double b[][])

public static double det(double[][] b)

关于java - 由于方法参数不匹配而导致编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29427312/

相关文章:

java - 如何检查子类的类型?

java - 如何检查值是否在java中是整数?

java - SSl 握手异常时出现错误证书错误

java - 如何结合Recyclerview和Fragment?

java - CursorLoader 通知数据变化

java - MultipartFormEntity - 内容太长

java - 返回一个整数,其数字之和恰好为 n

Java Split 取出单个单词并将它们保存为字符串?

java - java中如何计算12周前的日期?

java - 尝试并发现范围问题