Moin, bräuchte hilfe einen Passwortgenerator in Java zu programmieren?

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.

moinjungsen 
Fragesteller
 18.04.2021, 18:16

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

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

moinjungsen 
Fragesteller
 18.04.2021, 18:02

Bin gerade dabei, Danke für die ganzen Tipps!

1
gogogo  18.04.2021, 18:03
@moinjungsen

Sonst melde dich

Verstehst du das mit den Einrückungen als Zeichen für: innerhalb der Schleife

0
moinjungsen 
Fragesteller
 18.04.2021, 18:06
@gogogo

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));
	}
}
0
gogogo  18.04.2021, 18:10
@moinjungsen

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++

1
moinjungsen 
Fragesteller
 18.04.2021, 18:17
@gogogo

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));
    }
}
0
gogogo  18.04.2021, 18:18
@moinjungsen

Sieht soweit ich das erkennen kann, gut aus.

Compiliert es? Kommt was raus?

1

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?

moinjungsen 
Fragesteller
 18.04.2021, 18:20

Muss den Benutzer fragen

0
Schachpapa  18.04.2021, 18:28
@moinjungsen

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