【问题标题】:Generate a random string in Java [closed]在Java中生成一个随机字符串[关闭]
【发布时间】: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 不要编辑带有代码修复的问题。如果代码以某种方式被破坏,请将其作为评论或答案提出。

标签: java arrays


【解决方案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);
        }
    }
    

    【讨论】:

    • 非常有用,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-01
    • 2017-11-18
    • 1970-01-01
    • 2014-03-17
    • 2021-07-03
    • 2013-03-02
    • 2014-05-23
    相关资源
    最近更新 更多