获取编译错误:int [] []无法转换为int Java

时间:2017-04-16 22:20:15

标签: java for-loop matrix compiler-errors

问题应该在calculateMainDiagonal方法中,我得到的编译错误是:

  

int [] []无法转换为int int sumD1 =   calculateMainDiagonal(米);

现在主要应该和我的教授代码保持一致。任何帮助将不胜感激。我相信我想要返回一个int,但我不确定。

尝试尝试:

  

public static int [] [] calculateMainDiagonal(int sum);

     

public static int [] [] calculateMainDiagonal(int [] [] sum);

     

public static int calculateMainDiagonal(int sum)

当我输入此内容时:

  

public static int calculateMainDiagonal(int [] [] sum);

它给了我这个编译错误:

  

java:50:错误:缺少方法体,或声明抽象公共   static int calculateMainDiagonal(int [] [] sum);

public class TesterProject
{
    public static void main(String [] args)
    {
        int n = getMatrixSize();
        int[][] m = makeAndFillMatrix(n);
        printMatrix(m);

        int sumD1 = calculateMainDiagonal(m);
        System.out.println("The sum of the main diagonal is " + sumD1);
    }
    public static int getMatrixSize()
    {
        Scanner S = new Scanner(System.in);

        System.out.println("give me a int to create the matrix");
        int n = S.nextInt();
        return n;
    }
    public static int [][] makeAndFillMatrix(int n)
    {
        Random generator = new Random(5);
        int [][] r = new int[n][n];
        int rand = generator.nextInt(10);
        for(int i = 0; i < r.length; i++)
        {
            for(int j = 0; j < r[i].length; j++)
            {
                r[i][j]= rand;
            }
        }
        return r;
    }
    public static void printMatrix(int [][] matrix)
    {
        for(int r = 0; r < matrix.length; r++)
        {
            for(int c = 0; c < matrix[r].length; c++)
            {
                System.out.print(matrix[r][c] + " ");
            }
            System.out.println();
        }
    }
    //only problem is this method
    public static int calculateMainDiagonal(int sum);
    {
        int total = 0;
        for (int r = 0; r < total; r++)
        {
            total += r;
        }
        return total;
}

}

2 个答案:

答案 0 :(得分:1)

分号不正确,您的参数为int[][](不是int)。

public static int calculateMainDiagonal(int[][] m) // <-- no semicolon.
{
    int total = 0;
    for (int r = 0; r < m.length; r++) // <-- not r < total.
    {
        if (r < m[r].length) {
            total += m[r][r];
        }
    }
    return total;
}

答案 1 :(得分:0)

您需要删除calculateMainDiagonal(int m)末尾的分号,并将参数更改为calculateMainDiagonal(int[][] m) { ... }

您还需要修改该方法中的for循环,因为它没有考虑参数。

类似的东西:

public static int calculateMainDiagonal(int[][] matrix) {
    int total = 0;
    for (int r = 0; r < matrix.length; r++) {
        total += matrix[r][r];
    }
    return total;
}