【问题标题】:Java Random Class that Outputs Letters (A to E)输出字母(A 到 E)的 Java 随机类
【发布时间】:2017-03-26 02:47:43
【问题描述】:

所以我正在创建一个输出 3 个从 A 到 E 的随机字母的程序。问题是它还应该包括小写 A 到 E(A,a,B,b,C,c,D,d,E ,e)

这是我用来打印随机字母的。

letterValue = (char) (rand.nextInt(5) + 'A');
System.out.print(letterValue);

变量 'letterValue' 应该打印出 A 到 E,包括大写和小写。

【问题讨论】:

  • (char) (rand.nextInt(5) + rand.nextBoolean() ? 'A' : 'a');
  • 字母必须不同吗? A、b、A 会是有效的输出吗? A、b、a 会吗?
  • 这不起作用@flakes。
  • @Majestic,以什么方式不起作用?如果您尝试过,输出与您想要的有何不同?如果您需要我们的帮助,我认为您需要具体说明。
  • 只需设置必要的括号即可:(char) (rand.nextInt(5) + (rand.nextBoolean() ? 'A' : 'a'));

标签: java random letter


【解决方案1】:

这样做的一种非常优雅的方式:只需使用一个包含您打算“随机”设置的值的数组;然后洗牌该数组。而当你转向Javas List 类时,你可以使用内置的shuffle 方法:

喜欢:

List<Character> values = Arrays.asList('A', 'a', ... );
Collections.shuffle(values);

如果您坚持使用 char 数组而不是 List&lt;Character&gt; ...您仍然可以使用上述方法,因为您也可以轻松地将 List 转换为这样的数组(例如,参见 here) .

不使用数组时,可以“抛硬币”;含义:只是得到另一个随机值,可能是0或1。用0;只保留大写值;对于 1,简单使用对应的小写值。

(你知道你也可以使用“数学”从“A”到“a”——类似于你在这里已经做的)

【讨论】:

  • 没有数组怎么办?
【解决方案2】:
        letterValue = (char) (rand.nextInt(5) + 'A');
        if (rand.nextBoolean()) {
            letterValue = Character.toLowerCase(letterValue);
        }
        System.out.print(letterValue);

这只是众多方法中的一种。我正在使用您自己的代码,并尽量不使任务过于复杂。因为你想要 3 个随机字母,所以我运行了 3 次,它打印出 ddC

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-01
    • 2016-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多