2

对于我的课堂作业,我们需要编写一个名为 Matrix 的类,其中包含一个名为“matrix”的私有二维 int 数组,该数组最多可包含 10 行乘 10 列。我们需要使用两个常量 MAXROWS=10 和 MAXCOLS=10 来构造“矩阵”。Matrix 类还需要以下属性:

  private int rows; // number of rows to use in matrix
  private int cols; // number of cols to use in matrix

rows 和 cols 将包含小于等于 MAXROWS 和 MAXCOLS 的值。编写一个默认的 Matrix 类构造函数,该构造函数使用以下值构造“矩阵”数组:

  {{1,2,4,5},{6,7,8,9},{10,11,12,13}, {14,15,16,17}}

构造函数还必须设置 rows 和 cols 变量以匹配上述矩阵。

编写一个方法“getSumMatrix”,它返回数组“matrix”中所有整数的总和。

编写一个方法“getSumMatrixDiag”,它返回数组“matrix”的主对角线中所有整数的总和。主对角线是从矩阵的左上角到右下角形成的对角线。

是否有可能查看我的代码(我初始化数组并用值填充它以确保它是正确的。我坚持的部分是getSumMatrix和getSumMatrixDiag。getSumMatrix方法在“for( i=0; i < a.matrix; i++)”并告诉我“找不到符号 - 变量矩阵”。getSumMatrixDiag 会不会是同样的方式。为什么会这样?非常感谢。

这是我的代码

/** 索菲亚·阿里

  1. 矩阵、getSumMatrix、getSumMatrixDiag:

    电子邮件只是 Matrix.java。

    编写一个名为 Matrix 的类,其中包含一个名为 'matrix' 的私有二维 int 数组,该数组最多可包含 10 行乘 10 列。使用两个常量 MAXROWS=10 和 MAXCOLS=10 来构造“矩阵”。

    Matrix 类还需要以下属性:

    私有 int 行;// 矩阵中使用的行数 private int cols; // 矩阵中使用的列数

    rows 和 cols 将包含小于等于 MAXROWS 和 MAXCOLS 的值。

    编写一个默认的 Matrix 类构造函数,该构造函数使用以下值构造“矩阵”数组:

    {{1,2,4,5},{6,7,8,9},{10,11,12,13}, {14,15,16,17}}

    构造函数还必须设置 rows 和 cols 变量以匹配上述矩阵。

    编写一个方法“getSumMatrix”,它返回数组“matrix”中所有整数的总和。

    编写一个方法“getSumMatrixDiag”,它返回数组“matrix”的主对角线中所有整数的总和。主对角线是从矩阵的左上角到右下角形成的对角线。

    您不必编写 TestMatrix 类来测试 Matrix 类。只需使用 BlueJ 对象创建和测试功能。

    */ 公共类矩阵 {

    final int MAXROWS = 10;
    final int MAXCOLS = 10;
    
    private int [][] matrix = new int [MAXROWS][MAXCOLS];
    
    private int rows;
    private int cols;
    
    
    public Matrix()
    {
     int matrix[][] = 
     {
         {1, 2, 4, 5},
         {6, 7, 8, 9},
         {10, 11, 12, 13},
         {14, 15, 16, 17}};
         getSumMethod(matrix);
         getSumMatrixDiag(matrix);
        }
    
     public double getSumMethod(int[][] a)
     {
         int i, result;
         result = 0;
         for(i=0; i < 10; i++)
         {
             result = result + i;
         }
         return result;
     }
    
     public double getSumMatrixDiag(int[][] m)
     {
         int sum = 0;
    
         for (int i =0; i< m.length; i++) 
         {
             sum = (int)(sum + m[i][i]);
         }
         return sum;
        }
    

    }

编辑:

我正在使用 BlueJ 运行我的程序,当我运行它时,我收到错误“错误不兼容类型”。我不确定我的编码是否错误(当我编译它时,它编译时没有语法错误)或者我是否错误地使用了 BlueJ。

4

2 回答 2

0

在您的代码范围内,矩阵变量就在构造函数内。所以它在 getSumMethod 中是不可见的。此外,a 是上面指定的数组,a.matrix 不正确。

请尝试以下。调用方法 getSumMethod(matrix) 将矩阵作为参数传递,并将 a.matrix 替换为 a。然后看到你至少可以向前推进一些事情(可能是另一个错误)。如果您在下面尝试,那么您将出现与数据类型相关的错误,您可以通过输入正确的逻辑来解决这些错误。但是此代码需要大量改进才能按照您需要的方式运行。

 final int maxrows = 10;
    final int maxcols = 10;

    private int [][] matrix = new int [maxrows][maxcols];

    private int rows;
    private int cols;


    public Base64Test() {
        int matrix[][] = 
               {{1, 2, 4, 5},
                {6, 7, 8, 9},
                {10, 11, 12, 13},
                {14, 15, 16, 17}};
        getSumMethod(matrix);
    }

    public double getSumMethod(int[][] a) {
         int i, result;
         result = 0;
         for(i=0; i < a.length; i++) {
             result = result + a[i];
         }
         return result;
     }
于 2013-06-05T04:21:31.080 回答
0

对不起,我不知道这是你现在想要的,但这会对你有所帮助。

public class Matrix{ 

    private int matrix[][] ;    

    public Matrix ()
    {
        int[][] matrix =  {{1, 2, 4, 5},
                {6, 7, 8, 9},
                {10, 11, 12, 13},
                {14, 15, 16, 17}};
        this.matrix=matrix;
        int final_result=0;
        for(int i=0;i<matrix.length;i++)
        {
            final_result+=getSumMethod(matrix[i]);
        }

        System.out.println("Final result is..."+final_result);

    }


     public int getSumMethod(int[] a) {
         int i, result;
         result = 0;
         for(i=0; i < a.length; i++) {
             result = result + a[i];
         }
         return result;
     }
}

...

于 2013-06-05T05:15:00.157 回答