2017-10-12 70 views
-14

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

例如: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位数字

+0

@OHGODSPIDERS而'string'不是一种类型。 – Michael

+0

你为什么使用递归? –

+0

迂腐 - 虽然我确定你不在乎 - 这是在运行时产生的,而不是编译时间。 – Michael

回答

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

这是写在记事本+ +,因为我现在不要有任何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); 
    } 
} 
+0

非常有用,谢谢! – Dinh