如何打印填充有1和0的2d数组?

avwztpqn  于 2021-06-27  发布在  Java
关注(0)|答案(1)|浏览(420)

这个问题在这里已经有答案了

打印java数组最简单的方法是什么(32个答案)
昨天关门了。
我正在尝试打印一个带有1和0的2d数组(大小由用户指定)。然而,每次我试着跑的时候,我都会得到一些随机的数字和字母,比如“[[i@4eec7777而不是二维数组。我注解掉了for循环,并认为我已经将问题缩小到了数组的初始化?我不确定我做错了什么。

System.out.print("How many rows? : ");
    int numRows = userInput.nextInt(); //numRows works
    System.out.print("How many columns? : ");
    int numCols = userInput.nextInt(); //numCols works
    int randomArray[][] = new int[numRows][numCols]; 
//    for (int row = 0; row < randomArray.length; row++) {
//      int temp = (int) ((Math.random()*2)+1);
//      for (int col = 0; col < randomArray[row].length; col++) {
//        if (temp % 2 == 0) randomArray[row][col] = 1;
//      }
//    }
    System.out.println(randomArray);
des4xlb0

des4xlb01#

问题

数组不重写java中的tostring()方法。如果您尝试直接打印一个数组,您将得到由object.tostring()定义的数组哈希码的类名+@+十六进制数;

解决方案

由于Java5,您可以对数组中的数组使用arrays.tostring(arr)或arrays.deeptostring(arr)。注意,object[]version对数组中的每个对象调用.tostring()
因此,您可以通过

System.out.println(Arrays.deepToString(randomArray));

这里是完整的代码

import java.util.*;
public class Whatever {
    public static void main(String[] args) {

        Scanner userInput = new Scanner(System.in);

        System.out.print("How many rows? : ");
        int numRows = userInput.nextInt(); //numRows works
        System.out.print("How many columns? : ");
        int numCols = userInput.nextInt(); //numCols works
        int randomArray[][] = new int[numRows][numCols]; 
        for (int row = 0; row < randomArray.length; row++) {
          int temp = (int) ((Math.random()*2)+1);
          for (int col = 0; col < randomArray[row].length; col++) {
            if (temp % 2 == 0) randomArray[row][col] = 1;
          }
        }
        System.out.println(Arrays.deepToString(randomArray));
    }

}

相关问题