Huhu.. ich versuch gerade erlerntes zu "festigen" und bau mir so mini klassen die man vielleicht mal brauchen könnte zusammen.
Ich habe eine mini-Klasse geschrieben die ein Array (dessen inhalt) nimmt und es verwürfelt und zu einem String zusammenbaut. Soll vielleicht einmal so ein Passwort generator werden.
[Java]
import java.util.Random;
public class Randomizer {
private String[] komplex = {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "§", "$", "%", "?", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0"};
public Randomizer (String[] kList) {
komplex = kList;
}
public Randomizer() {}
public String randomString(int leange) {
Random r = new Random();
String[] tmpArray = komplex;
String returnIt = "";
int startZahl = r.nextInt(komplex.length);
int endZahl;
endZahl = leange;
int stackZahl = 0;
arrayShuffle(tmpArray);
stackZahl = (startZahl + endZahl) - 1;
// Sollte Startzahl zu nahe an dem Array Ende liegen, verwende die letzten felder des arrays
if (stackZahl >= komplex.length) {
stackZahl = (komplex.length - leange);
}
// Den String bauen
for (int i = startZahl; i <= stackZahl; i++) {
returnIt += tmpArray;
}
return returnIt;
}
public void arrayShuffle(String[] in) {
int rand;
String tmp;
Random r = new Random();
for (int i = 0; i < in.length; i++) {
rand = r.nextInt(in.length);
tmp = in;
in = in[rand];
in[rand] = tmp;
}
}
public void arrayShuffle(int[] in) {
int rand, tmp;
Random r = new Random();
for (int i = 0; i < in.length; i++) {
rand = r.nextInt(in.length);
tmp = in;
in = in[rand];
in[rand] = tmp;
}
}
}
[/Java]
Frage Nr 1: Hat jemand ein paar tipps wie ich das Array (Komplex) per Zufall zusammenbaue? Das Problem bei meiner Variante ist das ich keine Doppelten Buchstaben im String haben kann.
Frage Nr2: Das Programm scheint recht langsam zu laufen. Meine Testklasse braucht ca 10 Sekunden bis sie das erste Ergebnis auswirft.
Ich habe eine mini-Klasse geschrieben die ein Array (dessen inhalt) nimmt und es verwürfelt und zu einem String zusammenbaut. Soll vielleicht einmal so ein Passwort generator werden.
[Java]
import java.util.Random;
public class Randomizer {
private String[] komplex = {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "§", "$", "%", "?", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0"};
public Randomizer (String[] kList) {
komplex = kList;
}
public Randomizer() {}
public String randomString(int leange) {
Random r = new Random();
String[] tmpArray = komplex;
String returnIt = "";
int startZahl = r.nextInt(komplex.length);
int endZahl;
endZahl = leange;
int stackZahl = 0;
arrayShuffle(tmpArray);
stackZahl = (startZahl + endZahl) - 1;
// Sollte Startzahl zu nahe an dem Array Ende liegen, verwende die letzten felder des arrays
if (stackZahl >= komplex.length) {
stackZahl = (komplex.length - leange);
}
// Den String bauen
for (int i = startZahl; i <= stackZahl; i++) {
returnIt += tmpArray;
}
return returnIt;
}
public void arrayShuffle(String[] in) {
int rand;
String tmp;
Random r = new Random();
for (int i = 0; i < in.length; i++) {
rand = r.nextInt(in.length);
tmp = in;
in = in[rand];
in[rand] = tmp;
}
}
public void arrayShuffle(int[] in) {
int rand, tmp;
Random r = new Random();
for (int i = 0; i < in.length; i++) {
rand = r.nextInt(in.length);
tmp = in;
in = in[rand];
in[rand] = tmp;
}
}
}
[/Java]
Frage Nr 1: Hat jemand ein paar tipps wie ich das Array (Komplex) per Zufall zusammenbaue? Das Problem bei meiner Variante ist das ich keine Doppelten Buchstaben im String haben kann.
Frage Nr2: Das Programm scheint recht langsam zu laufen. Meine Testklasse braucht ca 10 Sekunden bis sie das erste Ergebnis auswirft.