在Java中生成随机字符串

时间:2017-10-12 08:22:56

标签: java arrays

我希望在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位数词

2 个答案:

答案 0 :(得分: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);
    }
}

答案 1 :(得分: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);
}