Passwort generator

Status
Nicht offen für weitere Antworten.

bröggle

Bekanntes Mitglied
Ich will mir einen passwort generator basteln,[PROTOTYP!!]
der zufällig 3 buchstaben aneinander hängen soll(3Zeichen ist lächerlich,aber es geht ums prinzip)


So nun habe ich ein char array mit dem alphabet gefüllt:
Code:
char[] buch = new char[27];
		String leer=new String(" ");
		buch[0]=leer.charAt(0);
		for(int i=1;i<buch.length;i++)
		{buch[i]=(char)(i+64);
		}

So, und nun will ich einen String, der 3 Buchstaben kombiniert...


also buch[a]+buch+buch[c]
a,b,c werden vorher per zufall bestimmt.

So wie bekomme ich nun einen String zusammen?
 
Das geht genauso wie Du geschrieben hast.
Du machst nen neuen Ausgabe String z.B.
Code:
String ausg = buch[a]+buch[b]+buch[c];
System.out.println(ausg);

fertig.

Strings und Chars kann man nämlich einfach mit nem Plus Zeichen verketten.
 
java.lang.Error: Unresolved compilation problem:
Type mismatch: cannot convert from int to String
at PW.main(PW.java:32)
Exception in thread "main"
Code:
31: String aus;
32: aus=buch[a]+buch[b]+buch[c];
 
Mein Vorschlag ist ein StringBuffer:
Code:
public static void main(String[] args) {
		char[] buch = new char[27];

		String leer = new String(" ");
		buch[0] = leer.charAt(0);
		for (int i = 1; i < buch.length; i++) {
			buch[i] = (char) (i + 64);
		}
		
		Random rnd = new Random();
		StringBuffer buffer = new StringBuffer(1000);
		for(int i = 0; i < 3; i++) {
			int index = Math.abs(rnd.nextInt()) % 26;
			buffer.append(buch[index]);
		}
		System.out.println(buffer.toString());
	}
warum ist denn der erste index von buch ein leerer String (wenn beabsichtigt, dann mach doch lieber) :
Code:
buch[0] = ' ';
 
ist beabsichtigt...
aber ich ahtte es mit buch[0]=" "; versucht, aber das ging nicht.
Hmm, mir ist gerade aufgefallen, " " ist nicht das wahre... kann ich auch irgendwie auf "" zugreifen? also einen leeren char?


Ich habe es mit einem Stringbuffer ausprobiert, dieser bleibt leer...komischer weise
 
Werft ihr da nicht Leerstring und Leerzeichen durcheinander?

:arrow: Ein Leerstring (als Konstante: "") ist ein Objekt der Klasse java.lang.String, dessen length()-Methode den int-Wert 0 liefert
:arrow: Ein Leerzeichen ist ein Primitiv des Datentyps char mit dem Ganzzahlwert 32, als Konstante 'Leerzeichen'.
:arrow: Deswegen gibt es keine "leeren" chars.
:arrow: Die charAt(int i)-Methode der String-Klasse gibt entweder das Zeichen an Position i als char zurück, oder wirft eine IndexOutOfBoundsException, wenn i einen größeren Index als die Länge des Strings minus 1 bezeichnet, oder einen negativen Wert. Bei einem String der Länge null kann der index nur zu goß oder negativ sein.

:arrow: Der Ausdruck
Code:
aus=buch[0]+buch[1]+buch[2];
ist stattdessen so zu schreiben:
Code:
aus=""+buch[0]+buch[1]+buch[2];
Die Leerstring-Konstante "" rechts vom Gleichheitszeichen bewirkt, dass aus dem ganze Ausdruck auf der rechten Seite ein String erzeugt wird, die linke Seite, aus, hält dann eine Referenz auf dieses neue Stringobjekt.


Alle Klarheiten beseitigt?

Viel Spaß beim Coden,
Jürgen
 
Vielen Dank für die kompetente Antwort.^-^

Ich habe es jetzt so gelöst:
Code:
StringBuffer s=new StringBuffer();
if(buch[a]!='!'){s.append(buch[a]);}
if(buch[b]!='!'){s.append(buch[b]);}
if(buch[c]!='!'){s.append(buch[c]);}
Und fülle buch[0] mit ! ->damit wird dieser Buchstabe nicht hinzugefügt...

->Klappt alles ^-^
 
Hmm, man kann sich auch einfach eine Zufallszahl zwischen 65 und 90 als Integer geben lassen und diese in einen char casten, und das dann zusammenhängen. Könnte auch gehen, habe ich jetzt nicht ausprobiert.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben