【问题标题】:Getting compile error: int[][] cannot be converted to int Java [closed]出现编译错误:int [] [] 无法转换为 int Java [关闭]
【发布时间】:2017-04-16 22:20:15
【问题描述】:

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

int[][] 不能转换为 int int sumD1 = 计算主对角线(m);

现在 main 应该与我的教授代码保持一致。任何帮助将不胜感激。我相信我应该返回一个 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;
}

}

【问题讨论】:

  • 声明calculateMainDiagonal的那一行多了一个分号。
  • 另外,不要调用参数sum。您正在计算矩阵中的值。矩阵是参数,而不是和。
  • 天啊,我太笨了……我花了好几个小时才研究它,哈哈。我不敢相信我没有发现这一点。

标签: java for-loop matrix compiler-errors


【解决方案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;
}

【讨论】:

    【解决方案2】:

    需要去掉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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-21
      • 1970-01-01
      • 2020-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多