Zufalls String mit Vorgaben

RykoJLL

Mitglied
Hallo Liebe Java-Forum Community
Momentan bin ich dabei einen Zufallsgenerator zu schreiben.
Nur habe ich dabei ein kleines Problem,ich generiere einen String mit 20 Zeichen.Diesen unterteile ich Gedanklich in 5 Blocks mit 4 Zeichen.
Was raus kommt ist bisher das: BNJL6IOKJJEP2BBLCNFR
So unterteile ich ihn BNJL 6IOK JJEP 2BBL CNFR.
Jetzt mein Problem. Ich will das in jedem Gedanklichen Block 2 Zahlen und 2 Buchstaben vorkommen,weis aber nich wie.
Java:
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.BufferedReader;
import java.io.FileReader;
import java.awt.datatransfer.StringSelection;
import java.awt.Toolkit;

public class zufällig {
    public static void main(String[] args) {
    try {
    FileWriter fs = new FileWriter("C:\\Dokumente und Einstellungen\\****\\Desktop\\Java\\code.txt",false);
        fs.write("");
        fs.flush();
        fs.close(); }
    catch(IOException d) {
        d.printStackTrace();
    }
           String[] Liste = {"A","A","B","C","D","E","E","F","G","I","I","J","J","K","L","N","O","O","P","Q","R","U","0","1","2","3","4","5","7","8","9","6"};
       int x = 0;
        while(x<20){
        int ransom = (int) (Math.random()*32);
        String lol = Liste[ransom];
        System.out.println(lol);
            x=x+1;
            try {
                File file = new File("C:\\Dokumente und Einstellungen\\****\\Desktop\\Java\\code.txt");
                FileWriter fw = new FileWriter( file, true);
                fw.write(lol);
                fw.flush();
                fw.close();
            }
            catch(IOException e) {
                e.printStackTrace();
            }
        }
        try {
        BufferedReader br = new BufferedReader(new FileReader("C:\\Dokumente und Einstellungen\\****\\Desktop\\Java\\code.txt"));
        String A;
        A = br.readLine();
        System.out.println(A);
            br.close();
            String myString = A;
            StringSelection ss = new StringSelection(myString);
            Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss, null);
        }
        catch(IOException f) {
            f.printStackTrace();
        }
    }
}
Ich weis die Art wie ich den String am Ende zusammenfasse ist etwas seltsam aber ich wusste nicht wie ich es anders machen sollte.
Hoffe das mir auch da jemand bei der Code Optimierung helfen kann.
 
Ich würde die ersten 2 "Teile" erstellen und testen ob dies Zahlen sind. Sollte dies zutreffen dann noch 2 Buchstaben generieren. Sollte nur eines der Beiden eine Zahl sein, muss ein weiteres zufälliges Zeichnen generiert werden und getestet werden, ob dies eine Zahl ist.
 
Ich würde ja einfach mal so eine Methode schreiben (hier static):

Java:
    public static char[] rand() {
        char[] result = new char[4];
        result[0] = (char) ('a' + (char) (Math.random() * ('z' - 'a' + 1)));
        result[1] = (char) ('a' + (char) (Math.random() * ('z' - 'a' + 1)));
        result[2] = (char) ('0' + (char) (Math.random() * ('9' - '0' + 1)));
        result[3] = (char) ('0' + (char) (Math.random() * ('9' - '0' + 1)));
        // oder Schleife...

        // ...dann mischen
        for (int i = 0; i < result.length; i++) {
            int j = (int) (Math.random() * result.length);
            char c = result[i];
            result[i] = result[j];
            result[j] = c;
        }
        return result;
    }

Zuerst mit Buchstaben und/oder Zahlen füllen, dann mischen... dann mit
Code:
System.out.println(new String(rand()));
ausgeben.
 

Neue Themen


Zurück
Oben