【问题标题】:Java converting integer to ASCII character A-F implicitlyJava 将整数隐式转换为 ASCII 字符 A-F
【发布时间】:2016-09-17 09:53:27
【问题描述】:

如何在不使用任何转换类且不使用显式转换的情况下将整数隐式转换为其 ASCII 等效项?

面临的问题是我正在尝试将整数 12 转换为字母 C 并将其附加到现有字符串。我的尝试如下:

s += 12 +'A'-10; 

我得到的只是输出 67,它是 ASCII 字符“C”的十进制等价物,但我需要字母 C 作为输出,而不是 67。

有没有办法在不使用多个 if-else-if 语句且不使用上述内容的情况下做到这一点?

【问题讨论】:

  • 输出量取决于实际如何打印,如何打印?
  • 为什么不只是String.format("%X", 12)

标签: java char int ascii implicit-conversion


【解决方案1】:

我没有看到你的问题。

    char s = 12 + 'A' - 10;
    System.out.println("s = '" + s + "'");

打印s = 'C'

【讨论】:

  • 问题是12 + 'A' - 10 的类型是int,所以s += <that> 将附加整数值,而不是字符。
  • @AndyTurner - 你试过s += (char) (...)吗?
  • 是的,看我的回答。关键是,如果您将其分配(或强制转换)给char,它确实有效,但 OP 并没有这样做。
【解决方案2】:

我假设:

char s = 'A' + 12 - 10;

会给字符 'C'

【讨论】:

    【解决方案3】:

    问题在于RHS上的表达式:

    12 + 'A' - 10
    

    int 类型,因为char 会自动扩展为int;所以+= 运算符会将整数值连接到字符串。

    两个选项(除其他外):

    1. 投射到char:

      s += (char) (12 + 'A' - 10);
      
    2. 使用String.format

      s += String.format("%X", 12);
      

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-20
      • 1970-01-01
      • 1970-01-01
      • 2013-10-18
      • 1970-01-01
      • 2013-02-08
      相关资源
      最近更新 更多