char zaehler='0';
while(zaehler<=9)
{
for(int i=0;i<pW.length();i++)
{
if(pW.charAt(i) == zaehler)
{
aPasswort = true;
i=pW.length();
} else
{
aPasswort = false;
}
}
zaehler++;
}
String text = "1blabla";
int zaehler=1;
if(text.charAt(0) == zaehler)
{
System.out.println("true");
} else
{
System.out.println("false");
}
if(text.charAt(0) == '1')
{
System.out.println("true");
} else
{
System.out.println("false");
}
boolean aPasswort;
boolean aPasswort1;
boolean aPasswort2;
boolean aPasswort3;
// trifft das erste zu ?
if(pW.length()>=8)
{
aPasswort1 = true;
} else
{
aPasswort1 = false;
}
// trifft das zweite zu ?
int ziffernZaehler = 0;
for(int i=0;i<pW.length();i++)
{
int zaehler=0;
while(zaehler<=9)
{
if(pW.charAt(i) == zaehler+48)
{
ziffernZaehler = ziffernZaehler +1;
zaehler = 10;
} else
{
aPasswort = false;
}
zaehler++;
}
}
if(ziffernZaehler == 2)
{
aPasswort2 = true;
} else
{
aPasswort2 = false;
}
// trifft das dritte zu ?
if(pW.charAt(0) >=48 && pW.charAt(0) <= 58)
{
aPasswort3 = false;
} else
{
aPasswort3 = true;
}
if(aPasswort1 == true && aPasswort2 == true && aPasswort3 == true)
{
aPasswort = true;
} else
{
aPasswort = false;
}
//Beispiel
char c;
c=(char)0; //speichert in c das Unicode-Zeichen mit der Nummer 0, indem der int-Wert rechts auf ein char gecastet wird.
c=0; //wird so nicht funktionieren, da links ein char (16 Bit) erwartet wird, rechts aber ein int-Literal (ein int ist 32 Bit breit) gefunden wird.
c='0'; //speichert in c das Unicode-Zeichen 0 (also die Ziffer 0)
c=(char)48; //speichert in c das Unicode-Zeichen 0 (also die Ziffer 0), indem es die entsprechende Nummer des Zeichens (hier: 48) speichert.
c='\u0000'; //speichert das Zeichen mit der Unicode-Nummer 0. Im Gegensatz zum ersten Beispiel wird hier aber ein char-Literal und kein int-Literal verwendet.
public boolean isPassword(String pW){
// trifft das erste zu ?
if(pW.length()<8) return false;// kein Passwort
// trifft das dritte zu ? (Die Reihenfolge habe ich vertauscht, das macht das Ganze schneller. ;)
char c=pW.charAt(0);
if(c<='9' && c>='0') return false;// auch kein Passwort, da erstes Zeichen Ziffer
// trifft das zweite zu ?
int ziffernZaehler = 0;
for(int i=1;i<pW.length();i++){//Zählen beginnt hier bei Index 1, denn im ersten
// Zeichen kann jetzt keine Ziffer mehr sein, er wäre sonst schon vorher rausgesprungen.
c=str.charAt(i);
if(c<='9' && c>='0') ziffernZaehler++;//ist wesentlich besser zu lesen
}
return ziffernZaehler == 2;// letzter Schritt, darum kann man das hier so schreiben (Logik ^^)
// (FRAGE: Sollte man nicht besser prüfen, ob mindestens(!) 2 Ziffern enthalten sind?!?)
}
public boolean isPassword(String pW){
if(pW.length()<8) return false;
char c=pW.charAt(0);
if(c<='9' && c>='0') return false;
int ziffernZaehler = 0;
for(int i=1;i<pW.length();i++){
c=str.charAt(i);
if(c<='9' && c>='0') ziffernZaehler++;
}
return ziffernZaehler == 2;
}
So zum Beispiel:Ark hat gesagt.:Wenn Du so scharf darauf bist, Regex zu verwenden, dann schreib doch mal eine Lösung, ich bin schon gespannt, wie lang die wird. :lol:
public boolean isPassword(String password)
{
int counter = 0;
Matcher mat = Pattern.compile("\\d").matcher(password.substring(1));
while(mat.find() && counter <2)
counter++;
if(counter>1)
return password.matches("([^0-9])\\w{7,}+");
return false;
}
boolean foundMatch = password.matches("\\A[^\\d ](?=[\\S]*[\\d][\\S]*[\\d])\\S{7,}\\z");
public final boolean isPassword(final String pW){
char c;
final int l=pW.length();
if(l<8||((c=pW.charAt(0))<='9'&&c>='0')) return false;
int z=0;
for(int i=1;i<l;i++) if((c=str.charAt(i))<='9'&&c>='0') z++;
return z==2;
}
public boolean isPassword(String pW){
if(pW.length()<8) return false;// Länge stimmt nicht
char c = pW.charAt(0);
if(c<='9' && c>='0') return false;// erstes Zeichen ist Ziffer
int ziffern = 0;// Anzahl der Ziffern
// Beginn der Schleife bei Index 1,
// da erstes Zeichen bereits überprüft
for(int i=1;i<pW.length();i++){
c = str.charAt(i);
if(c<='9' && c>='0') ziffern++;// Ziffern zählen
}
return ziffern == 2;
// true, wenn auch die letzte Bedingung
// erfüllt ist, sonst false
}
Ark hat gesagt.:Na ja, aber gerade die return-Anweisungen (gerade die letzte!) zeugen doch von ziemlich viel Erfahrung, so schreiben Programmieranfänger normalerweise nicht. Das könnte dem Lehrer verdächtig vorkommen …![]()