Witam! Poniższa funkcja sprawdza dane, które użytkownik wpisał w polu. Pętla działa, jednak nie wiem dlaczego pomija pierwszy i ostatni warunek tzn jeśli wpiszę co innego niż same liczby, program to wyłapie i wyświetli odpowiedni komunikat, natomiast jeśli wpiszę same liczby program zależnie od tego czy warunek jest pierwszym czy ostatnim w pętli, przejdzie dalej nie sprawdzając długości wpisanego stringa(jeśli warunek jest pierwszy w pętli)lub się po prostu zawiesi(ostatni warunek pętli). Dlaczego tak się dzieje?
public String start(){
do{
String psl;
psl = PPesel.getText();
nowy.numer = psl;
if(nowy.numer.length()>11){
Komunikat.setBackground(Color.pink);
Komunikat.setText("Pesel zbyt długi! - musi zawierać dokładnie 11 cyfr!");
nowy.nr=false;
break;
}
if(nowy.numer.matches("[0-9]+") == false && nowy.numer.length()==11){
Komunikat.setBackground(Color.pink);
Komunikat.setText("PESEL musi zawierać WYŁĄCZNIE cyfry!");
nowy.nr=false;
}
if(nowy.numer.matches("[0-9]+")==false && nowy.numer.length()<11){
Komunikat.setBackground(Color.pink);
Komunikat.setText("PESEL musi zawierać WYŁĄCZNIE cyfry! "
+ " PESEL zbyt krótki! - musi zawierać 11 cyfr!");
nowy.nr=false;
}
if(nowy.numer.matches("[0-9]+")==false && nowy.numer.length()>11){
Komunikat.setBackground(Color.pink);
Komunikat.setText("PESEL musi zawierać WYŁĄCZNIE cyfry! "
+ " PESEL zbyt długi! - musi zawierać 11 cyfr!");
nowy.nr=false;
}
if(nowy.numer.matches("[0-9]+") == true && nowy.numer.length()<11){
Komunikat.setBackground(Color.pink);
Komunikat.setText("Pesel zbyt krótki! - Musi zawierać dokładnie 11 cyfr!");
nowy.nr=false;
}
else{
//Komunikat.setText("Podany PESEL to: " +nowy.numer);
nowy.nr=true;
break;
}
}
while(nowy.nr==false);
podziel();
return nowy.numer;