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

使用 Java 中的构造函数初始化 2-D 数组 [重复]

百里默
2023-03-14

矩阵.java

    import java.io.*;
    class Matrix {
        private int q[][];

        public Matrix() {
            for(int i=0;i<3;i++)
            for(int j=0;j<3;j++)
                q[i][j] = Integer.parseInt(System.console().readLine());    
        }


        public Matrix( int a , int b ) {    
            int mat[][] = new int [a][b];
            for(int i=0; i<mat.length; i++) {
                for(int j=0;j<mat[i].length;j++)
                    q[i][j] = Integer.parseInt(System.console().readLine());
            }
        }



         public void show() {
            for(int i=0; i<q.length; i++) {
                for(int j=0;j<q[i].length;j++)
                    System.out.println(q[i][j]+" ");
            }   
        }
    }

使用矩阵.java

class UseMatrix {
    public static void main(String args[]) {

        Matrix m1 = new Matrix();  
        System.out.println("First Matrtix ");
        m1.show();

        Matrix m2 = new Matrix(5,4);
        System.out.println("Second Matrtix "); 
        m2.show();


    }
}

此程序在运行时显示NullPointerException错误

我想通过Default Constructors创建一个大小为3*3的2D Array。

然后,我想使用参数化构造函数创建一个大小为5*4的数组

共有1个答案

严兴旺
2023-03-14

有许多问题:

>

  • 第一个:private int q[][];//这包含一个空值,从未在无参数构造函数上赋值。一个可能的解决方案是添加构造函数:q[][]=newint[A][b]q[i]=新int[b];//每次进入循环时。请参阅下面的代码以了解详细信息。

    public Matrix(){中,第二个尝试在不检查数组长度的情况下访问数组内容(for(inti=0;i

    第三,读取< code>console()时出现问题,所以我也更改了它。(并添加了一行让用户输入数字的内容)

    我所做的最后一个更改是对显示方法的一个小调整。

    结果:

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    
    public class App {
        public static void main(String[] args) {
    
            Matrix m1 = new Matrix();
            System.out.println("First Matrtix ");
            m1.show();
    
            Matrix m2 = new Matrix(5,4);
            System.out.println("Second Matrtix ");
            m2.show();
        }
    
    
    }
    
    class Matrix {
        private int q[][];
        private BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    
        public Matrix() {
            this(3, 3);
        }
    
    
        public Matrix(int a, int b ) {
            int value;
            System.out.println("Input a number to fill the new 3x3 matrix");
            try {
                value = Integer.parseInt(br.readLine());
            } catch (IOException e) {
                throw new RuntimeException("There was a problem reading the number from console", e);
            }
            q = new int[a][b];
            for(int i=0;i<a;i++) {
                q[i] = new int[b];
                for(int j=0;j<b;j++) {
                    q[i][j] = value;
                }
            }
        }
    
    
    
        public void show() {
            for(int i=0; i<q.length; i++) {
                for(int j=0;j<q[i].length;j++)
                    System.out.print(q[i][j]+" ");
                System.out.print("\n");
            }
        }
    }
    

  •  类似资料:
    • 我想在构造函数中初始化二维数组。但是,我在类中声明数组的实例变量时遇到了一个问题。如果我这样做就错了: 我怎么解决这个问题?

    • 问题内容: 我有一堂课,在那堂课我有: 然后在我的构造函数中: 如果这样做,一切正常。默认数据值已初始化,但如果我改为这样做: 它说: 为什么? 在构造函数内部初始化数组的最佳方法是什么? 问题答案: 这已经将您的数组元素初始化为0。您无需在构造函数中再次重复该操作。 在您的构造函数中,它应该是:

    • 我试图从WebClient中替换RestTemplate,因为根据Java文档,RestTemple将被弃用。Spring团队建议尽可能使用WebClient。 之前的RestTempalte代码如下 我想从WebClient替换RestTemplate。所以我实现了类WebClientConnection,如下所示 我使用这个依赖项 Webclient create 上有堆栈溢出错误 如何正确地

    • 问题内容: 我有两个班,第一个是我的主班,第二个是我的编辑框架班。 我的第二个类(UpdateGUI)在其构造函数中提供oldName,并对其进行编辑,当我单击时,它将newName发送给我的第一个类。 我的第二堂课: 我的问题是,为什么newName为null? 更新: UpdateGUIDialog类: 输出: 我需要打印而不是null。 问题答案: Java对象有点像真实对象。并顾名思义:它

    • 问题内容: 在Java中,但是在其他OO语言中,初始化属性定义之间也有区别,例如 并使用构造函数对其进行初始化? 我想不出任何实际的区别,有没有?否则,即使结果相同,是否存在一种方法优于另一种方法的情况? 问题答案: 初始化顺序在这里很重要。 将字段设置为默认初始值(0,false,null) 调用对象的构造函数(但不要执行构造函数的主体) 调用超类的构造函数 使用初始化程序和初始化块初始化字段

    • 我有一个类定义为 由于类中有一个const成员,编译器会隐式删除默认的复制构造函数。需要给它一个参数进行初始化。 问题出现在课堂上 这个类包含前面类对象的std::array。如何初始化这个数组?大小参数需要给std::array的每个元素来初始化。我想将std::array的每个元素设置为。 当然,我可以使用初始值设定项列表,但由于构造函数有12个元素和其他参数,代码变得越来越难看。此外,我用6