2017-10-12 3 views
-14

Ich möchte eine zufällige Zeichenfolge mit 6 Zeichen bei jeder Kompilierung eines Programms in Java generieren.Generieren Sie eine zufällige Zeichenfolge in Java

Zum Beispiel: 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); 
    } 
} 

Ausgang ist

A,AX,AXF,AXFC,AXFCG,AXFCGA 

aber ich will direktes 6-stellige Wort

+0

@OHGODSPIDERS Und auch 'string' ist kein Typ. – Michael

+0

Warum verwenden Sie Rekursion? –

+0

Und um pedantisch zu sein - obwohl es mir sicher egal ist - wird das zur Laufzeit generiert und nicht zur Kompilierzeit. – Michael

Antwort

1

Ihre Methode, um Ihren Zweck zu erreichen. Ihr Problem besteht darin, dass Sie Ihre Schritte "protokollieren", indem Sie sie in Ihrer Methode drucken (Außerdem gibt es Fehler wie string, Ihre generate Funktion falsch aufrufen, aber da Sie uns die Ausgabe gaben, denke ich, Sie repariert es irgendwann).

Wenn Sie nur dies tun:

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); 
    } 
} 

wird es funktionieren. Alternativ können Sie die word in Ihrer Funktion zu drucken, können Sie einen iterativen Ansatz verwenden, haben:

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

Dies wurde in Notepad ++ geschrieben, als ich zur Zeit jede IDE verfügbar nicht haben, ich hoffe das kompiliert und wenn es funktioniert sollte es Arbeit :) Wenn Sie Großbuchstaben verwenden möchten, bearbeiten Sie einfach die for-Schleife!

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; 
    } 
} 

Edit: mit Ihrem Code!

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

Sehr nützlich, danke ! – Dinh

Verwandte Themen