java - 使用 Arrays.toString 打印矩阵

标签 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 个词,分别是 hello 和 bye。下一行打印矩阵。

    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]

最佳答案

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

顺便说一句,您可以使用 str.toCharArray() 简化代码并删除内部循环返回 char[]str 持有的字符组成的数组.

关于java - 使用 Arrays.toString 打印矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46044907/

相关文章:

java - 我是 Java 自动化测试的新手。我应该更喜欢哪个工具? JUnit 还是 TestNG?

java - Hibernate 和 @JoinFormula : org. hibernate.mapping.Formula 无法转换为 org.hibernate.mapping.Column

javascript - AngularJS 关联数组 Foreach

c - 有没有办法硬编码二维整数数组而不必在 C 中提及任何维度?

javascript - 有没有办法使用 Javascript 列出文件夹中存在的所有文件而不使用任何 HTML 标签?

c++ - 为什么我们只能用初始化列表初始化一个数组

java - Swing 布局问题

java - 如何从输入的一组数字中获取最大值和最小值?

java - 哈希码计算

c++ - 有没有更好/更有效的方法来存储大型数组