2017-04-16 79 views
-1

的问题应该在calculateMainDiagonal方法,编译错误我得到的是:收到编译错误:INT [] []不能被转换成int的Java

int[][] cannot be converted to int int sumD1 = calculateMainDiagonal(m);

现在主要应该保持不变,因为它是我的教授码。任何帮助将不胜感激。我相信我想要返回一个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: error: missing method body, or declare abstract public 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

声明该行'calculateMainDiagonal'中有一个多余的分号。 – ajb

+0

另外,不要调用参数'sum'。你正在计算一个矩阵的值。矩阵是参数,而不是总和。 – ajb

+0

OMG,我好蠢......我在这里工作了好几个小时。我不敢相信我没有发现这一点。 – IDK

回答

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