Check uitvoeren op waardes

Status
Niet open voor verdere reacties.

EdjeCageman

Gebruiker
Lid geworden
24 okt 2011
Berichten
273
Mensen,

Ik heb een hele lap aan check's geschreven, als ik een klant wil toevoegen loopt hij deze check door. Echter als ik de klant toevoeg met een faxnummer EN een e-mailadres loopt mijn systeem in de soep en werkt het totaal niet meer. Dus misschien ziet iemand voor mij de fout?

Code:
public String checkwaarde(String voornaam, String achternaam, String adres, String huisnummer, String postcode, String woonplaats, String telefoonnummer, String Sofinummer, String eigenrisico, String fax, String mail)
	{
		//controlle deel om te kijken of alle waarde in de GUI goed is ingevuld
		boolean voornaamcheck = Pattern.matches("[a-zA-Z]+", voornaam);
		boolean achternaamcheck = Pattern.matches("[a-zA-Z \t]+", achternaam);
		boolean adrescheck = Pattern.matches("[a-zA-Z \t]+", adres);
		boolean huisnummercheck = Pattern.matches("[0-9a-zA-Z]+", huisnummer);
		boolean postcodecheck = Pattern.matches("[0-9]{4} ?[a-zA-Z]{2}", postcode);
		boolean woonplaatscheck = Pattern.matches("[a-zA-Z \t ]+", woonplaats);
		boolean telefoonnummercheck = Pattern.matches("[0-9]+", telefoonnummer);
		boolean sofinummercheck = Pattern.matches("[0-9]+", Sofinummer);
		String waarde = null;
		
		//check op naam
		if(voornaamcheck == false)
		{
			waarde = "Foute waarde in voornaam\nAlleen maar A-Z of a-z gebruiken" ;
		}
		if(achternaamcheck == false)
		{
			waarde = "Foute waarde in achternaam\nAlleen maar A-Z of a-z gebruiken";
		}
		if(adrescheck == false)
		{
			waarde = "Foute waarde in adres\nAlleen maar A-Z of a-z gebruiken\n (Huisnummer hier niet invullen)";
		}
		if(huisnummercheck == false)
		{
			waarde = "Foute waarde in huisnummer\nAlleen maar 0-9, A-Z of a-z gebruiken\nen beginnend met een nummer";
		}
		if(postcode.length() >6)
		{
			waarde = "postcodelengte klopt niet\n4 cijfers 2 letters";
		}
		if(postcode.length() <4)
		{
			waarde = "postcodelengte klopt niet\n4 cijfers 2 letters";
		}
		if(postcodecheck == false)
		{
			waarde = "Foute waarde in postcode\n0000XX";
		}
		if(woonplaatscheck == false)
		{
			waarde = "Foute waarde in woonplaats\nAlleen maar A-Z of a-z gebruiken";
		}
		if(telefoonnummer.length()>10)
		{
			waarde = "Telefoonnummer te lang\nHuidige: " + telefoonnummer.length() + " cijfers\n" + "Verwacht: 10 cijfers" ;
		}
		if(telefoonnummer.length()<10)
		{
			waarde = "Telefoonnummer te lang\nHuidige: " + telefoonnummer.length() + " cijfers\n" + "Verwacht: 10 cijfers" ;
		}
		if(telefoonnummercheck == false)
		{
			waarde = "Foute waarde in telefoonnummer\n alleen maar 0-9";
		}
		if(sofinummercheck == false)
		{
			waarde = "Foute waarde in sofinummer\n alleen maar 0-9";
		}
		if(mail == null)
		{
			waarde = "ok";
		}
		else
		{
			//deze checks moeten hier gedaan worden, aangezien er ook niks ingevuld kan worden, en dan krijg je een Nullpointer.
			boolean mailcheck = Pattern.matches("^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$", mail);
			if(mailcheck == false)
			{
				waarde = "Voer geldig e-mailadres in";
			}
		}
		if(fax == null)
		{
			waarde = "ok";
		}
		else
		{
			//deze checks moeten hier gedaan worden, aangezien er ook niks ingevuld kan worden, en dan krijg je een Nullpointer.
			boolean faxcheck = Pattern.matches("[0-9]+", fax);
			
			if(fax.length()>10)
			{
				waarde = "Faxnummer te lang\nHuidige: " + fax.length() + " cijfers\n" + "Verwacht: 10 cijfers" ;
			}
			else if(fax.length()<10)
			{
				waarde = "Faxnummer te lang\nHuidige: " + fax.length() + " cijfers\n" + "Verwacht: 10 cijfers" ;
			}
			else if(faxcheck == false)
			{
				waarde = "Foute waarde in fax\n alleen maar 0-9";
			}
		}
	return waarde;
}
 
Ff extra info, ik heb de loop doorlopen met een System.out om het ff te testen daarmee printte ik de checks...en op de plek van e-mail, zegt hij dat de waarde "false" is maar dit zegt hij ook als de waarde klopt:S Dus als je een goed mailadres invoer, hij zou dan telkens de fout moeten aangeven maar dat doet ie niet:S
 
Laatst bewerkt:
Er zijn een aantal zaken nog wel te verbeteren (niet direct on topic maar ach):

Je telefooncheck kan een stuk eenvoudiger door dit ineens mee te nemen in de regex. Je laat ook geen "-" toe, laat dat de gebruiker dan ook weten! Hetzelfde geld voor de fax. per se 10 cijfers geen "-":

Code:
[0-9]{10}

Je postcode regex laat alleen 4cijfers mischien-spatie 2letters toe. Vervolgens doe je nog een lengte check. Dat is onnodig, laat geen spatie toe in de regex en de lengte kan automatisch nooit meer dan 6 zijn of korter.

mogelijk geeft je email check false terug omdat het patroon niet helemaal klopt. Ik moet die misschien even in mijn eigen editor zetten, maar hij ziet er wat vreemd uit
 
Had ik zelf kunnen bedenken...:P niet bij stil gestaan, of was er een rede waarom ik dat niet had gedaan? Hmm...weet niet meer, heb het vorig jaar gemaakt (klinkt zo ver weg, was december:P ) Maar ik blijf false terug krijgen op de e-mail, wanneer er geen fax is ingevuld, en ik krijg nu wel een true terug bij mail als de klant ook een faxnr invoert (en het een correct mailadres is...) Ik heb de code wel een beetje aangepast adh van een topic wat ik had gevonden.

code is nu een aparte methode geworden:
Code:
	public boolean emailcontrolle(String mail)
	{
		Pattern pattern = Pattern.compile("^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$");
		Matcher matcher = pattern.matcher(mail);
		  return matcher.matches();
	}

en die roep ik dan aan op de plek van de mailcheck:
Code:
boolean mailcheck = emailcontrolle(mail);
 
Ik zou gewoon twee variabelen gebruiken, MailOK en FaxOK. Dan op het einde checken:

if (mailOK || faxOK)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan