使用Arrays.toString打印矩阵

时间:2017-09-04 22:59:02

标签: java arrays

以下代码询问用户要创建的字数:

    String sInt = JOptionPane.showInputDialog("Cuántas palabras vamos a capturar?");
    int palabras = Integer.parseInt(sInt);
    char[][] charMatrix = new char[palabras][];

目标是将单词保存在矩阵中并打印出来,将每个字符保存在不同的矩阵维度中。

    for (int i = 0; i<palabras; i++) {
        String str = JOptionPane.showInputDialog("Palabra: ");
        for(int j = 0; j<=str.length() - 1; j++) {
            charMatrix[i] = new char [str.length()];
            charMatrix[i][j] = str.charAt(j);
        }
    }

让我们说用户选择了2个单词,他们是你好再见。下一行打印矩阵。

    for(int r = 0; r <charMatrix.length; r++) {
        System.out.println(Arrays.toString(charMatrix[r]));
    }

应该打印:

    [h,e,l,l,o]
    [b,y,e]

但是打印:

    [ , , , ,o]
    [ , ,e]

1 个答案:

答案 0 :(得分:3)

charMatrix[i] = new char [str.length()];循环之前向上移动for。从用户阅读str后,您需要设置一次该数组。目前在每次迭代开始时,您将存储在charMatrix[i]新数组中,该数组不包含先前设置的值,因此在最后一次迭代后,您将获得仅具有最后一个元素集的空数组(因为最后一次迭代仅放置该元素) 。

顺便说一下,您可以使用str.toCharArray()来简化代码并删除内部循环,char[]会返回str数组,其中包含obj所拥有的字符。