BlueJ 2d尺寸阵列

时间:2013-06-05 03:52:34

标签: java constructor multidimensional-array bluej

对于我的类赋值,我们需要编写一个名为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

行和列将包含小于等于MAXROWS和MAXCOLS的值。 编写一个默认的Matrix类构造函数,用以下值构造'matrix'数组:

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

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

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

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

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

这是我的代码

/ ** 索菲亚·阿里

  1. Matrix,getSumMatrix,getSumMatrixDiag:

    仅发送电子邮件至Matrix.java。

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

    Matrix类还需要以下属性:

    private int rows; //在矩阵中使用的行数   private int cols; //矩阵中使用的col数

    行和列将包含小于等于的值 MAXROWS和MAXCOLS。

    编写构造'矩阵'的默认Matrix类构造函数 具有以下值的数组:

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

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

    编写一个方法'getSumMatrix',它返回所有整数的总和 在数组'矩阵'中。

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

    您不必编写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;
        }
    

    }

  2. 编辑:

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

2 个答案:

答案 0 :(得分:0)

在你的代码中,矩阵变量的范围就在构造函数里面。因此它在getSumMethod中不可见。另外a是如上所述的数组a.matrix不正确。

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

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

答案 1 :(得分: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;
     }
}

...