【问题标题】:Cannot print numbers after 9不能打印 9 之后的数字
【发布时间】:2020-02-12 15:23:13
【问题描述】:

我有一个 char[][]。我想打印从 0 到大小的数字。当我达到数字 9 时,就会出现 ascii 表中的下一个字符。我的代码是:

 if (j >3 && j % 5 == 0 && i==0) {
     bor[i][j] = (char)(co + '0');
     co++;
 }
 if (j == 0 &&  i > 0 && i%2 ==0) {
     bor[i][j] = (char)(ro + '0');
     ro++;
 }

if 语句只是声明在什么位置打印某些数字。 我想我从 int 转换为 char 的方式是错误的,但我不知道任何可行的方法 9点以后。

【问题讨论】:

  • 请看一下如何创建minimal reproducible example
  • "10" 与 "1" 后跟 "0" 相同,所以我想在这种情况下您希望将两个字符放入相邻位置,而不是一个.
  • 您的代码中有太多我们不知道的内容。这让人很难回答。例如,也许您的打印错误?如上所述,请阅读如何提出一个好的问题/示例
  • 我敢打赌,只要您看一下 ASCII 表,您至少会明白为什么会发生这种情况。另外,您是否有任何理由使用chars 而不是实际数字?
  • single char 值您希望打印 2 字符文本 10

标签: java arrays char int


【解决方案1】:

char 数据类型是单个 16 位 Unicode 字符。

看看代码:

char ch1 = 67; // it is symbol code
char ch2 = 'C'; // symbol
System.out.println(ch1 + "  " + ch2 );

输出是

C C

因此,您可以将数组类型从 char[][] 更改为 int[][], 并删除强制转换。

您的示例中有很多遗漏的代码,所以我将粘贴未完成的示例:

    int[][] bor = new int[100][100];
    ...
    if (j >3 && j % 5 == 0 && i==0) {
        bor[i][j] = co;
        co++;
    }
    if (j == 0 &&  i > 0 && i%2 ==0) {
        bor[i][j] = ro;
        ro++;
    }

【讨论】:

    猜你喜欢
    • 2020-10-16
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-17
    相关资源
    最近更新 更多