【问题标题】:Java String to Char ArrayJava 字符串到字符数组
【发布时间】:2018-08-10 23:38:17
【问题描述】:
String c="12345";
for(char k:c.toCharArray())
System.out.print(k+4);

这个程序输出: 5354555657

我真的不明白为什么要发布这些数字。我看到的唯一模式是它打印一个“5”,然后从字符串中获取“1”并添加 2 来生成“3”。然后打印一个“5”,然后从字符串中取出“2”,加上 2 得到“4”,然后打印一个“5”,依此类推。

【问题讨论】:

  • 打印 53|54|55|56|57。只需将 4 添加到各个字符的 ascii 值即可。 (例如:“1”的 ASCII 为 49 => 添加 4 => 53)
  • 每个char都可以被视为数值,代表它在Unicode表中的索引。同样在 Java 中 char + int = int 这意味着当我们以 '1'+4 结束时,它被评估为 49 (index of character '1') 增加 453

标签: java arrays loops for-loop char


【解决方案1】:

这是因为您将 int 添加到字符(它将您的字符转换为 int,然后将其添加到 4,然后将其打印出来)。

你需要做的:

System.out.println(Character.getNumericValue(k) + 4);

【讨论】:

  • 很棒的反应!这是针对我的孩子在计算机科学的书面部分提出的 UIL 问题。
  • k 的 ASCII 码是 107,所以我不认为我在关注你。
  • @TroyWalker kvalue 持有 value 字符,如'1''2',您需要查看它们的索引。
  • @TroyWalker - 这是数字字符的 ascii 值,而不是 k。例如,ascii 中的 1 是 47,2 是 48,等等(它将 char 转换为 int)。将这些值添加到 k 的值中会为您提供上面的输出。
【解决方案2】:

当提升为int 以添加4 时,数组中的字符采用其基础Unicode 值,其中ASCII values 是一个子集。数字 0-9 分别由代码 48-57 表示。字符 '1''5' 是 49-53,然后加 4 得到 53-57。

添加后,将总和转换回char,以便print 可以将其解释为char

System.out.print( (char) (k+4));

输出:

56789

【讨论】:

  • 谢谢,这是有道理的。感谢您的回复。
猜你喜欢
  • 1970-01-01
  • 2012-04-20
  • 2014-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-15
  • 2014-04-28
  • 2011-10-04
相关资源
最近更新 更多