Moin, bräuchte hilfe einen Passwortgenerator in Java zu programmieren?
Folgende Aufgabestellung:
Bitte schreibe eine Anwendung welche vom Benutzer die Länge eines zu generierenden Passworts einliest.
Anschließend soll das Programm ein zufälliges Passwort mit gegebener Länge generieren.
Beispiel: Benutzer gibt 5 ein. Das Programm berechnet ein Passwort. z.B gj4hM
Hinweis: Du kannst mit Math.random() eine Zahl zwischen 0.0 und 1.0 generieren.
Hier mein Code;
public class PasswortGenerator {
public static void main(String[] args){
String alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
int laenge = 5;
char[] passwort = new char[laenge];
System.out.println(new String(passwort));
}
}
4 Antworten
int ix = (int)(Math.random() * alphabet.length());
passwort[i] = alphabet.charAt(ix);
Das machst du innerhalb einer Schleife, in der i von 0 bis laenge-1 läuft.
Und zwar nachdem du das Array "passwort" erzeugt hast und bevor du die Ausgabe machst.
So praktisch?
public class PasswortGenerator {
public static void main(String[] args) {
JOptionPane.showInputDialog("Wie lang soll ihr Passwort sein?");
String alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
int laenge = 5; // TODO: Länge des Passwortes einlesen
char[] passwort = new char[laenge];
for (int i = 0; i < laenge; i++) {
int index = (int)(Math.random() * alphabet.length());
passwort[i] = alphabet.charAt(index );
}
// TODO: Passwort in der Variable "passwort" generieren
System.out.println(new String(passwort));
}
}
For - Schleife, Laufvariable = i. Bei 0 beginnend
--- Zufallszahl erzeugen und mit Länge von alphabet multiplizieren. In eine int-Variable speichern. Name = index
--- passwort[i] = alphabet[index];
Sonst melde dich
Verstehst du das mit den Einrückungen als Zeichen für: innerhalb der Schleife
Habe jetzt das gemacht;
import javax.swing.JOptionPane;
public class PasswortGenerator {
public static void main(String[] args) {
JOptionPane.showInputDialog("Wie lang soll ihr Passwort sein?");
String alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
for (int i = 0; i < alphabet.length(); i++) {
Math.random();
System.out.println(i);
}
int laenge = 5; // TODO: Länge des Passwortes einlesen
char[] passwort = new char[laenge];
// TODO: Passwort in der Variable "passwort" generieren
System.out.println(new String(passwort));
}
}
laenge und passwort vor die Schleife
for ( int i = 0; i < laenge; i++ )
{
int index = (int) (Math.random() * alphabet.length ()):
passwort[i] = alphabet.charAt( i );
}
Sitze am Smartphone. Der Zugriff mit [] auf einen String ist in C++
Habe es jetzt so gemacht;
public class PasswortGenerator {
public static void main(String[] args) {
JOptionPane.showInputDialog("Wie lang soll ihr Passwort sein?");
String alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
int laenge = 5; // TODO: Länge des Passwortes einlesen
char[] passwort = new char[laenge];
for (int i = 0; i < laenge; i++) {
int index = (int)(Math.random() * alphabet.length());
passwort[i] = alphabet.charAt(index );
}
// TODO: Passwort in der Variable "passwort" generieren
System.out.println(new String(passwort));
}
}
Wenn es mit GUI sein soll:
String eingabe = JOptionPane.showInputDialog("Frage");
laenge = Integer.parseInt(eingabe);
Die Einrückung ist etwas eigenwillig ...
Sollte aber funktionieren, oder?
Wofür brauchst du den InputDialog, wenn laenge stets auf 5 gesetzt wird?
Muss es über ein GUI sein, wenn du die Ausgabe in die Konsole schreibst?
Ich würde es so machen:
int laenge;
Scanner input = new Scanner(System.in);
System.out.println("Gewuenschte Laenge?");
laenge = input.nextInt();
char[] passwort = new char[laenge];
Ganz oben in die erste Zeile:
import java.util.Scanner;
Bin gerade dabei, Danke für die ganzen Tipps!