Java Magic Square - 求和列和求和行错误

标签 java arrays methods compiler-errors magic-square

我被分配了一项学校作业,要在用户生成的 N*N 矩阵中的二维数组中制作并检查“幻方”。

到目前为止,我已经正确地编写了大部分代码(我已经单独测试了每个方法)。但是,我无法纠正在我的“sumColumn”和“sumRow”方法中不断出现的两个最终错误。这是我对上述两种方法的代码:

public static int sumColumn(int[][] square, int columnNumber)
{
    int sum = 0 ;
    for (int j = 0; j < square.length ; j++)
    {
        for (int i = 0; i < square.length; i++)
        {
            sum = sum + square[i][j] ;
        }
    }                        
    return sum ;
}

public static int sumRow(int[][] square, int rowNumber)
{
    int sum = 0 ;
    for (int i = 0; i < square.length; i++)
    {
        for (int j = 0; j < square.length; j++)
        {
            sum = sum + square[i][j] ;
        }
    }
    return sum ;
}

这是输出以及从 main 方法调用时出现的错误:

Please enter a value for N:
1
Please enter 1 numbers: 
1
This is the square you input:
+-+
|1|
+-+
Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
The method sumRow(int[][], int) in the type MagicSquares is not applicable for the arguments (int[][]) at squares.MagicSquares.validMagicSquare(MagicSquares.java:105)
The method sumColumn(int[][], int) in the type MagicSquares is not applicable for the arguments (int[][]) at squares.MagicSquares.main(MagicSquares.java:167)

有些摆弄“sumRow”和“sumColumn”会产生另一个错误:

Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
rowNumber cannot be resolved to a variable at squares.MagicSquares.validMagicSquare(MagicSquares.java:105)
colNumber cannot be resolved to a variable at squares.MagicSquares.main(MagicSquares.java:167)

对于解决此问题,我们将不胜感激!谢谢!

PS:我上个月才开始编程,所以请多关照 :3

编辑:这里是检查每行、每列以及主对角线和副对角线是否等于构成幻方的方法。

boolean status = true ;
    int sum = sumDiagonal(square) ;
    if (sumSecondaryDiagonal(square) != sum)
    {
        status = false ;
    }
    else
    {
        for (int row = 0; (row < square.length) && status; row ++)
        {
            if (sum != sumRow(square, square.length))
            {
                status = false ;
            }
        }
        for (int col = 0; (col < square.length) && status; col ++)
        {
            if (sum != sumColumn(square, square.length))
            {
                status = false ;
            }
        } 
    }
    return status;

最佳答案

您的sumColumn 方法需要两个参数:

  1. int[][] 方形
  2. int columnNumber

在您的 main 方法中,您似乎只提供了一个参数 int[][],而您忘记将 columnNumber 作为第二个参数包含在内。

同样适用于 sumRow 方法。

我根据您发布的错误信息做出了上述发现:

MagicSquares 类型中的方法 sumRow(int[][], int) 不适用于 squares.MagicSquares.validMagicSquare(MagicSquares.java:105) 中的参数 (int[][])

它表示,在您的 MagicSquares.java 文件的第 105 行中,您调用了 sumRow 方法。它进一步表明 (The method sumRow(int[][], int) in the type MagicSquares),您实现的方法不能用于/不适用于带参数的调用 (int[][]),第 105 行。

关于Java Magic Square - 求和列和求和行错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32307123/

相关文章:

java - 安卓/Java : showDialog with arguments?

java - 单击 JButton 时更改标签的文本 java

java - 如何在Java中对整数输入求和,并在程序末尾将结果显示在数组中?

c# - 重载空歧义

Java调用同一个类的另一个方法中的一个方法

java - 调用方法时出现NPE

java - 增强正则表达式以验证电话号码

java - android studio 编辑器恢复到旧文件然后是当前本地

java - <JTable>.getSelectedRow() 返回 -1

java - 使用扫描仪输入类处理可变数量的参数