【问题标题】:Generating random words of a certain length in java?在java中生成一定长度的随机单词?
【发布时间】:2015-02-10 07:27:11
【问题描述】:

我想问另一个问题,关于如何编写一个生成一定长度的随机单词的方法,以及在调用方法时用户选择将从该方法生成和返回的单词的长度。 JOptionPane 需要用于输入。方法工作需要通过Main展示。

【问题讨论】:

  • 它们必须是字典单词(如英文字典)还是随机字符集?到目前为止,您尝试过什么?
  • 它们必须是一定长度的随机字符集。用户需要选择要生成的单词的长度。
  • 完全有可能。如果您想确保它的大小写是随机的,您可以通过在该范围内生成随机数从ASCII table 中随机获取,然后将其转换为char(65 到 90 代表大写字母 A 到 Z,97 到 122表示小写 a 到 z)。如果没有,则需要创建一个字母数组并从中随机选择
  • 到目前为止你做了什么?例如,什么是“词”?对于本练习,它们是由空格分隔的(某些区域设置)字符的集合。所以,从那里开始。看看能不能写一个简单的方法,根据随机字符生成定长字符串。提示:生成 1 到 26 之间的一系列数字(或从零开始,如果你愿意),包括在内,你用来在所有字符的数组中查找一个字符可能是一种廉价的开始方式。

标签: java


【解决方案1】:

你想生成什么样的词?随机小写字符?

String getRandomWord(int length) {
    String r = "";
    for(int i = 0; i < length; i++) {
        r += (char)(Math.random() * 26 + 97);
    }
    return r;
}

【讨论】:

    【解决方案2】:

    这是一种生成length 字符的小写字符串的简单方法。这个想法是您使用ASCII table 随机添加一个字符,直到达到所需的长度。

    public static String randomWord(int length) {
        Random random = new Random();
        StringBuilder word = new StringBuilder(length);
        for (int i = 0; i < length; i++) {
            word.append((char)('a' + random.nextInt(26)));
        }
    
        return word.toString();
    }
    

    【讨论】:

    • 但是用户需要选择从方法中生成和返回的字符长度。我必须使用 JOptionPane 进行输入。
    • @StefanAritonović 这是您用来生成随机词的方法。您需要编写与JOptionPane 挂钩的代码以及您的其他要求。
    【解决方案3】:

    最简单的方法是使用 org.apache.commons.lang3 包中的RandomStringUtils 类。下面的示例向您展示了如何使用它。例如,当您将 10 传递给方法时,它将返回类似“WYhZXwUQfl”的内容。

     public String generateRandomString(int stringLength){
        return RandomStringUtils.randomAlphabetic(stringLength);
    }
    

    我鼓励你检查这个类,因为它有很多有用的方法来生成随机字符串。

    【讨论】:

    猜你喜欢
    • 2011-06-24
    • 1970-01-01
    • 1970-01-01
    • 2020-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-16
    • 1970-01-01
    相关资源
    最近更新 更多