在Java中生成一个随机字符串[关闭]

Posted

技术标签:

【中文标题】在Java中生成一个随机字符串[关闭]【英文标题】:Generate a random string in Java [closed] 【发布时间】:2018-03-24 02:33:42 【问题描述】:

我想在每次用 Java 编译程序时生成一个 6 字符的随机字符串。

例如:AXFGCD、GDGXSD、PLRSFX、GLTSDL

public class generate
    public static void main(String args[])
        generate();
    

    string word = "";
    string Characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

    void generate(int x)
        if (x==7) return;

        int time = System.currentTimeMillis() % 33; //to generate time in mili second
        word += characters.charAt(time);
        System.out.println(time);
        return generate(++x);
    

输出是

A,AX,AXF,AXFC,AXFCG,AXFCGA

但我想要直接的 6 位字

【问题讨论】:

@OHGODSPIDERS 而且string 不是类型。 你为什么要使用递归? 要迂腐——虽然我敢肯定你不在乎——这是在运行时而不是编译时生成的。 @rohitjoshi9023 不要编辑带有代码修复的问题。如果代码以某种方式被破坏,请将其作为评论或答案提出。 How to generate a random alpha-numeric string?的可能重复 【参考方案1】:

你的方法正在达到你的目的。您的问题是您通过在您的方法中打印它们来“记录”您的步骤(此外,还有像 string 这样的错误,错误地调用了您的 generate 功能,但是由于您给了我们输出,我猜您在某些地方修复了它点)。

如果你这样做:

public class generate
    public static void main(String args[])
        generate(0);
        System.out.println(word); // Here word is complete

    

    String word = "";
    String Characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

    void generate(int x)
        if (x==7) return;

        int time = System.currentTimeMillis() % 33; //to generate time in mili second
        word += characters.charAt(time);
        return generate(++x);
    

它会起作用的。或者,要在函数中打印 word,您可以使用迭代方法:

void generate()
    for (int i = 6; i --> 0;) 
        int time = System.currentTimeMillis() % 33; //to generate time in mili second
        word += characters.charAt(time);
    
    System.out.println(word);

【讨论】:

【参考方案2】:

这是用 Notepad++ 编写的,因为我目前没有任何可用的 IDE,我希望它可以编译,如果可以的话,它应该可以工作 :) 如果你想使用大写字符,只需编辑 for 循环!

public class generate

    private static char[] characters;
    private static Random random = new Random();

    public static void main(String args[])
        characters = new char[26];
        int index = 0;
        for (char c = 'a'; c <= 'z'; c++) 
            characters[index++] = c;
        
        System.out.println(generate());
    

    static String generate() 
        String word = "";
        for(int i = 0 ; i < 7 ; i++) 
            word += Character.toString(characters[random.nextInt(characters.length)]);
        
        return word;
    

编辑:使用您的代码!

public class generate
    public static void main(String args[])
        generate();
    

    string word = "";
    string Characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

    void generate(int x)
        if (x==7) 
            System.out.println(word);
            return;
        

        int time = System.currentTimeMillis() % 33; //to generate time in mili second
        word += characters.charAt(time);
        return generate(++x);
    

【讨论】:

非常有用,谢谢!

以上是关于在Java中生成一个随机字符串[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何在Java中生成随机字符串[重复]

在Java中生成字母数字随机字符串[重复]

如何在Java中生成随机字符串[重复]

在Java中生成随机单词?

是否有在Java中生成随机字符的功能?

在 Java ME/J2ME 中生成随机十六进制字符串(长度为 50)