Produkt

Status
Nicht offen für weitere Antworten.

nata

Bekanntes Mitglied
hi an allen,
ich möchte bitten ob jemand zeit hat einen blick auf meine Id und namensüberprüfungen zu werfen.Kann man Id überprufung noch kompakter machen?
Java:
public class Produkt {
	private String name;
	private String id;
	
	public Produkt(String name, String id) {
		 setName(name);
		
	     setId(id);
	}
	public void setName(String name)throws Exception {
	
		// TODO: Überprüfungen einbauen - dazu für name und id setter schreiben
		// name: darf nicht null oder leer sein
		if (name == null || name.length() == 0){
			throw new Exception("Produktname darf nicht null oder leer sein");
				
		}
		this.name = name;	
	}
	
	
	public void setId(String id ) throws Exception {
		// id: hat den aufbau AAA-1111-AAA: 3 Buchstaben (großes A bis großes Z),
		// Bindestrich, 4 Ziffern, Bindestrich, noch einmal 3 Buchstaben
		if (id == null || id.lengh() != 12){
			throw new Exception ("id darf nicht null sein"); 
			
		}
		for (int i=0 ; i < 3 ; i ++  ){
			char c = id.charAt(i);
			
			if (!Character.isLetter(c) || !Character.isUpperCase(c)) {
				throw new Exception("die erste id zeichen sollen buchstaben sein");
			}
			
		}
		if(id.charAt(3) != '-'|| id.charAt(8) != '-'){
			throw new Exception("die 4. und 9. zeichen mussen bindestrich sein");
		}
		for(int i=4 ; i < 8 ; i ++   ){
			char c = id.charAt(i);
			
			if (!Character.isDigit(c) ) {
				throw new Exception("5. bis 8. zeichen solle zifer sein");
			}
			
		}
		
		for(int i=9 ; i < 11 ; i ++   ){
			char c = id.charAt(i);
			
			if (!Character.isLetter(c) || !Character.isUpperCase(c)) {
				throw new Exception("die letzte 3 zeichen sollen auch grosse buchstaben sein");
			}
			
		}
		
		
		this.id = id;
		
	}
	
	public String getId() {
		return id;
	}
	
	public String toString() {
		return id + ": " + name;
	}
}

danke vielmals
MFG nata
 
Einfach einen Regulären Ausdruck verwenden: id.matches("[A-Z]{3}-[0-9]{4}-[A-Z]{3}");

Btw: Das Problem hat nicht direkt was mit "Produkt" zu tun -> schlechte Titelwahl!
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben