数组输出不了应该怎么改


package 第五次作业;

import java.util.Arrays;

public class Matrix {
    //声明一个矩阵类 Matrix,
    //其成员变量是一个二维数组,
    //数组元素类型为int,
    //设计下面的方法,
    //并声明测试类对这些方法进行测试
    
    private int[ ][ ]  matix;
    

    public Matrix() {
        super();
        for(int i=0;i<10;i++) {
            for (int j = 0; j < 10; j++) {
            matix[i][j]=0;
                                                      }
                                           }
                                }

    public Matrix(int n) {
        
        super();
        for(int i=0;i<n;i++) {
            for (int j = 0; j < n; j++) {
            matix[i][j]=(int) Math.random();
                                                      }
                                           }
                                }
    
    public Matrix(int n,int m) {
        super();
        for(int i=0;i<n;i++) {
            for (int j = 0; j < m; j++) {
            matix[i][j]=(int) Math.random();
                                                      }
                                           }
    }
    
    
    public Matrix(int table[][]) {
        matix= table;
    }

    @Override
    public String toString() {
        return "Matrix [matix=" + Arrays.toString(matix) + "]";
    }
package 第五次作业;

import java.util.Arrays;

public class Matrix_tst {

    public static void main(String[] args) {
        // TODO 自动生成的方法存根

        int [][] arr = new int[2][2];
        for(int i =0;i<arr.length;i++) {
            for(int j =0;j<arr.length;j++) {
                arr[i][j]=1;
            }
        }
            
        Matrix a = new Matrix();
        Matrix b = new Matrix(2);
        Matrix c = new Matrix(2,3);
        Matrix d = new Matrix(arr);
        
        System.out.println(a.toString());
        System.out.println(b.toString());
        System.out.println(c.toString());
        System.out.println(d.toString());
    }

}
    
}

这些10是干什么的,你没有那么多元素放进去不就空指针异常了么,Matrix 类这样改一下

img


这里加一个数组赋值吧

img

import java.util.Arrays;
public class Matrix {
    private int[ ][ ]  matix;


    public Matrix() {
        super();
        matix = new int[10][10];
        for (int i = 0; i < 10; i++) {
            for (int j = 0; j < 10; j++) {
                matix[i][j] = 0;
            }
        }
    }

    public Matrix(int n) {

        super();
        matix = new int[n][n];
        for(int i=0;i<n;i++) {
            for (int j = 0; j < n; j++) {
                matix[i][j]=(int) Math.random();
            }
        }
    }

    public Matrix(int n,int m) {
        super();
        matix = new int[n][m];
        for(int i=0;i<n;i++) {
            for (int j = 0; j < m; j++) {
                matix[i][j]=(int) Math.random();
            }
        }
    }


    public Matrix(int table[][]) {
        matix= table;
    }

    @Override
    public String toString() {
        return "Matrix [matix=" +  Arrays.deepToString(matix) + "]";
    }
 }


  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7480559
  • 你也可以参考下这篇文章:逆序输出单链表结点值
  • 除此之外, 这篇博客: 快速排序怎么写?中的 两种解法的比较 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 直观和简洁,在上面已经谈过了,这里主要想说,两者的复杂度如何!

    上面举例,用的是同个数组,发现第一种需要交换三次,而第二种只需要交换两次,是不是意味着第二种更好呢?

    有人确实有过这样的错觉,hhh,不记得在哪看到的了,应该是知乎或伯乐在线中的一个。

    为什么我要说是错觉呢?是不是觉得,第一种解法,一个数字,可以被交换多次?而第二种解法,省了很多交换?(确实有点道理,不过不是真理就对了,且听下面分析)

  • 您还可以看一下 王恩龙老师的软件测试基础课程中的 软件测试准入准出条件小节, 巩固相关知识点