当前位置: 首页 > 知识库问答 >
问题:

BlueJ二维数组

邹学民
2023-03-14

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

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

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

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

是否有可能让我的代码被检查(在那里我初始化数组并用值填充它以确保它是正确的。我卡住的部分是得到苏姆矩阵和得到苏姆矩阵诊断。获取萨姆矩阵方法在“for(i=0;我

这是我的代码。

/**索菲亚·阿里

>

  • 矩阵,getSumMatrix,getSumMatrixDiag:

    只给Matrix.java发邮件。

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

    Matrix类还需要以下属性:

    私有整数行;//在矩阵私有整数中使用的行数;//在矩阵中使用的列数

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

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

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

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

    编写一个“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。

  • 共有2个答案

    曹疏珂
    2023-03-14

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

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

    ...

    凤昊东
    2023-03-14

    在代码中,矩阵变量的作用域就在构造函数内部。因此,它在“获取方法”中是不可见的。此外,a 是上面指定的数组,a.矩阵不正确。

    请尝试以下操作。调用方法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;
         }
    
     类似资料:
    • 我正在编写一个计算和绘制抛物线的小程序。但我在程序中有一小部分需要计算valuetable。 二次函数如下:

    • 二维数组 #include <stdio.h> #include <stdlib.h> //01.二维数组: // 1.二维数组的内存存储原理: // 所有数组,无论一维数组,二维数组,多维数组,在内存当中的 // 存储实质都是采取的连续存储方式 // 2.二维数组的规律赋值方式: // 先进行行遍历,在进行列遍历,再逐个进行逐个数组元素的具体赋值操作 //

    • BlueJ是一个为入门级教学设计的Java开发环境。它是由澳大利亚墨尔本Monash大学BlueJ小组设计并开发的。

    • 主要内容:创建二维数组,初始化二维数组,获取单个元素,获取全部元素,获取整行元素,获取整列元素为了方便组织各种信息,计算机常将信息以表的形式进行组织,然后再以行和列的形式呈现出来。二维数组的结构决定了其能非常方便地表示计算机中的表,以第一个下标表示元素所在的行,第二个下标表示元素所在的列。下面简单了解一下二维数组,包括数组的声明和初始化。 创建二维数组 在 Java 中二维数组被看作数组的数组,即二维数组为一个特殊的一维数组,其每个元素又是一个一维数组。Java 并不直接支持二维数组,但是

    • 主要内容:指针数组和二维数组指针的区别二维数组在概念上是二维的,有行和列,但在内存中所有的数组元素都是连续排列的,它们之间没有“缝隙”。以下面的二维数组 a 为例: int a[3][4] = { {0, 1, 2, 3}, {4, 5, 6, 7}, {8, 9, 10, 11} }; 从概念上理解,a 的分布像一个矩阵: 但在内存中,a 的分布是一维线性的,整个数组占用一块连续的内存: C语言中的二维数组是按行排列的,也就是先存放

    • 我有一个“连接四块板”,我用一个2d阵列(阵列[x][y]x=x坐标,y=y坐标)模拟它。我必须使用“System.out.println”,所以我必须遍历行。 我需要一种迭代方式[0,0][1,0][2,0][3,0][0,1][1,1][2,1]等 如果我使用正常程序: 它不起作用,因为它以[0,0][0,1][0,2][0,3]等方式进行迭代 正常过程保持在x中并递增y直到列的末尾,但我需要