1

我完全被这个 char 场景弄糊涂了。我知道在 java 中,如果你使用单个字符,你会使用 char。我了解 math.random 但我不知道如何为随机数分配大写字母?

我读这个的方式是:打印 -> 输入 case char 原始类型 -> 字母“A” -> 连接一个最多 27 的随机数...

但这段代码如何工作?

public class question {
  public static void main(String[] args) {
    System.out.println((char)('A' + Math.random() * 27));
  }
}
4

4 回答 4

2

在 Java 中,achar本质上是一个 16 位无符号整数以及单个符号。在 char 和 integer 之间使用 + 时,使用普通加法而不是串联。每个字符的值是它们通常的 unicode 值:大写 A 是 65。

那么这里发生了什么?Math.random() 在 [0..1) 范围内产生一个随机浮点数。乘以 27(运算顺序)并将结果添加到 65。最后,将结果数字转换为 char 并打印,从而生成字母表中的随机字母。

于 2013-10-27T22:04:55.283 回答
1

出于多种目的,可以将Achar视为整数——例如A65(在 ASCII 和 Unicode 中)。当您将其添加到 0 到 25 之间的随机数并将其转换回 时char,您将在 A 和 Z 之间生成一个随机字母。简单!

于 2013-10-27T22:03:56.600 回答
1

如果将 a 转换int为 a char,则整数值将用作ASCII表中字符的索引。因此,此代码使用大写字母 A (65) 的 ASCII 代码并将 0 加到 25 以从 to 获取A字符Z

正如@ruakh 在评论中所说,您应该在 to 范围内添加值以从[0, 25]toA获取字符。因此使用代替.AZMath.random() * 26Math.random() * 27

于 2013-10-27T22:04:25.517 回答
0
public class question {
  public static void main(String[] args) {
    System.out.println('A' + 1); //The result is 66.
    System.out.println('B' + 1); //The result is 67.
    System.out.println('C' + 1); //The result is 68.
    System.out.println('A' + 100); //The result is 165.
  }
}
于 2013-10-27T22:13:07.680 回答