【问题标题】:In Java how do you randomly select a letter (a-z)?在 Java 中,如何随机选择一个字母(a-z)?
【发布时间】:2021-09-28 02:32:22
【问题描述】:

如果我想在 a 和 z 之间随机选择一个字母,我假设我必须使用 Random 类:

Random rand = new Random();

但是由于这只会生成数字,我需要做什么才能将其应用于字母?

【问题讨论】:

    标签: java random


    【解决方案1】:
    Random r = new Random();
    char c = (char) (r.nextInt(26) + 'a');
    

    【讨论】:

    【解决方案2】:

    字母,或更准确地说,字符是数字(扩展 ascii 中从 0 到 255,非扩展中从 0 到 127)。例如,在 ASCII 中,'A'(引号表示字符,而不是字符串)是 65。所以 1 + 'A' 会给你 66 - 'B'。 所以,你可以取一个从 0 到 26 的随机数,把它加到字符 'a' 上,你就是:随机字母。

    你也可以用一个字符串来做,输入“abcdefghijklmnopqrstuvwxyz”并在这个链中随机位置,但巴克解决方案更优雅。

    【讨论】:

    • 我认为“选择给定字符串的随机字符”是更优雅的解决方案。
    【解决方案3】:

    @Michael Barker 的更改版本

    Random r = new Random();
    int c = r.nextInt(26) + (byte)'a';
    System.out.println((char)c);
    

    【讨论】:

    • 为什么要投到byte
    【解决方案4】:
    char randomLetter = (char) ('a' + Math.random() * ('z'-'a' + 1));
    

    【讨论】:

      【解决方案5】:

      为什么假设使用 Random 而不是 Math.random?你甚至可以让代码更短...

      public static char genChar(){
          return (char)(Math.random()*26 + 'a');
      }
      

      【讨论】:

        【解决方案6】:
        import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic;
        ...
        randomAlphabetic(1).toLowerCase()
        

        这会给你一个带有单个字符的字符串

        【讨论】:

          【解决方案7】:

          要从 (a- z) 中随机选择一个字母,我会执行以下操作:

          Random rand = new Random();
          ...
          char c = rand.nextInt(26) + 'a';
          

          由于 Random.nextInt() 生成一个从 0 到 25 的值,因此您只需添加一个偏移量 'a' 即可生成小写字母。

          【讨论】:

            【解决方案8】:

            使用字母的ascii值生成随机数。

            【讨论】:

              【解决方案9】:
              Random r = new Random();
              char symbel = (char)(r.nextInt(26) + 'a');
              if(symbel>='a' && symbel <= 'z') {
                  System.out.println("Small Letter" + symbel);
              } else {
                  System.out.println("Not a letter" + symbel);
              }
              

              【讨论】:

              • 为什么要检查字符是否在a-z 范围之外?这永远不会发生。
              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2016-02-10
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-12-06
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多