2017-10-12 122 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