【问题标题】:Is there a possibility to write a random letter generator as short as in python?是否有可能编写一个像 python 一样短的随机字母生成器?
【发布时间】:2019-10-23 21:38:59
【问题描述】:

所以我想缩短我的代码,我问自己,Java 中的随机字母生成器是否有可能与 python 中的一样短。在 python 中,它只是一对一的衬里。

以下代码是我的代码:

int random = (int) Math.random()*25;

String[] letters ={"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"}; 

String letter = letters[random]; 

【问题讨论】:

  • 嗨 Pereki,很高兴发布您的代码 :)
  • Python 能做到多短,你想要什么样的“短”度量?人物?脚步?还有什么?
  • 如果您要求比较,很高兴知道我们在比较什么,即 Python 能做到多“短”?
  • xyz 发生了什么?
  • 哈哈,有点意思,谢谢提醒

标签: java random letter


【解决方案1】:

这是创建 100 个字符的最短版本:

Character[] result = new Random().ints(100,'a','z'+1).mapToObj(ch -> (char)ch).toArray(Character[]::new);

【讨论】:

    【解决方案2】:

    使用 ASCII 表。 97 = 'a',所以只需将随机数添加到其中并转换为 char。

    ASCII Table

    public class MyClass {
        public static void main(String args[]) {
            char z = (char)(97 + Math.random()*26);
            System.out.println("z = " + z);
        }
    }
    

    【讨论】:

    • 使用 'a',而不是 97,使代码更加自我记录。
    【解决方案3】:

    如果“短”仅表示一行,那么以下任何一种都可以:

    char letter = "abcdefghijklmnopqrstuvwxyz".charAt((int) (Math.random() * 26));
    
    char letter = (char) ThreadLocalRandom.current().nextInt('a', 'z'+1);
    
    char letter = (char) ('a' + Math.random() * 26);
    

    【讨论】:

      猜你喜欢
      • 2016-07-05
      • 2011-02-18
      • 1970-01-01
      • 2013-01-30
      • 2020-03-01
      • 1970-01-01
      • 2017-04-05
      • 1970-01-01
      相关资源
      最近更新 更多