【问题标题】:Unable to print an array of character in java? Possibly encoded?无法在java中打印字符数组?可能是编码的?
【发布时间】:2020-03-19 06:00:50
【问题描述】:

我今天想开始一个小项目,但遇到了一个奇怪的(至少对我而言)错误。 给定一个字符数组,我无法使用 for 循环打印这些数字。

这里是代码。

public class Grid
{
    public static char[][] matrix = {
            {1, 2, 3},
            {4, 5, 6},
            {7, 8, 9}
    };

    public static void draw()
    {
        for(int i = 0; i < 3; i++)
        {
            for(int j = 0; j < 3; j++)
            {
                System.out.print(matrix[i][j]);
            }
            System.out.print("\n");
        }
    }
}

这是主类

public class Main
{
    public static void main(String[] args)
    {
        Grid.draw();
    }
}

输出





我不明白问题出在哪里,因为如果我从“char[][]”切换到“int[][]”,一切正常吗? 代码对我来说看起来很正常,谁能解释如何解决这个问题?发生这种情况的原因是什么? 谢谢:)

【问题讨论】:

    标签: java arrays character-encoding char


    【解决方案1】:

    字符数组必须使用单引号 ('') 进行初始化,这是您能够使用 int[] 但在 char[] 中出现错误的唯一原因。

    【讨论】:

      【解决方案2】:

      这里的事情是Java中的char类型是一个2字节的整数类型。因此,您可以将 numbers 分配给 char 变量。但字符“1”的代码点不等于数字 1。

      如果您按如下方式初始化字符数组,我想该示例将按预期工作:

          public static char[][] matrix = {
                  {'1', '2', '3'},
                  {'4', '5', '6'},
                  {'7', '8', '9'}
          };
      

      【讨论】:

        【解决方案3】:

        用单引号将您的字符括起来。 '1','2'....

        【讨论】:

          【解决方案4】:

          您的数组是一个 2D char 数组。这意味着里面的所有东西都是char。当您System.out.println((char) 1); 时,它将打印“id”等于 1 的 ASCII 字符,谁知道这个字符是什么(对我来说,它打印一个我的浏览器无法显示的字符)。为了更好地看到它,请System.out.println((char) 65);。你会看到输出是'A',因为在 ASCII 中,'A' 是 65 个字符。

          如果你想打印 1, 2,3 等,你必须在这个数组的每个单元格值中添加一个单引号(让 java 认为它们是字符),这意味着当你打印时,它会做System.out.println('1');。或者你会给出 ASCII 码。对于 1,它是 49。所以System.out.println((char) 49); 将打印 1。

          【讨论】:

            猜你喜欢
            • 2019-06-27
            • 1970-01-01
            • 2014-05-18
            • 2019-02-12
            • 1970-01-01
            • 2014-12-18
            • 1970-01-01
            • 2010-09-18
            相关资源
            最近更新 更多