# Passwort generator



## bröggle (30. Jan 2004)

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:
	
	
	
	





```
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?*


----------



## Guest (30. Jan 2004)

Das geht genauso wie Du geschrieben hast. 
Du machst nen neuen Ausgabe String z.B.

```
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.


----------



## bröggle (30. Jan 2004)

> java.lang.Error: Unresolved compilation problem:
> Type mismatch: cannot convert from int to String
> at PW.main(PW.java:32)
> Exception in thread "main"




```
31: String aus;
32: aus=buch[a]+buch[b]+buch[c];
```


----------



## bygones (30. Jan 2004)

Mein Vorschlag ist ein StringBuffer:

```
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) :

```
buch[0] = ' ';
```


----------



## bröggle (30. Jan 2004)

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


----------



## Javahnsinn (31. Jan 2004)

Werft ihr da nicht Leer*string* und Leer*zeichen* 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 
	
	
	
	





```
aus=buch[0]+buch[1]+buch[2];
```
 ist stattdessen so zu schreiben: 
	
	
	
	





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


----------



## bröggle (31. Jan 2004)

Vielen Dank für die kompetente Antwort.^-^

Ich habe es jetzt so gelöst:

```
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 ^-^


----------



## Stefan1200 (2. Feb 2004)

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.


----------

