StudentList

Status
Nicht offen für weitere Antworten.

nata

Bekanntes Mitglied
Hi leute,
ich habe program geschrieben und wenn ich den laufen lasse liefert mir immer wieder
"Name darf nur aus buchstaben oder leerzeichen bestehen"
worin liegt mein fehler?
Java:
package UniversitaetList;

public class Student {

	private String name;
	private String matrNr;
	
	public Student(String name, String matrNt) throws Exception{
		setName(name);
		setMatrNr(matrNr);
		
		
	}
	
	public void setName(String name)throws Exception{
		if(name == null || name.trim().length() == 0){
			throw new Exception("Name darf nicht leer oder null sein");
		}
		for(int i = 0; i < name.length(); i++){
			char c = name.charAt(i);
			if(!Character.isLetter(c) || !Character.isWhitespace(c)){
				throw new Exception("name darf nur leerzeichen oder buchstaben enthalten");
			}
		}
			this.name = name;	
	}
	
	public void setMatrNr(String matrNr)throws Exception{
		if(matrNr.length()!= 8 ){
			throw new Exception("Matrikelnummer darf nur die laenge 8 haben");
		}
		if(!Character.isLowerCase(matrNr.charAt(0))){
			throw new Exception("Matrikelnummer darf nur mit einem kleinen buchstaben beginnen");
		}
		for(int i = 1; i < matrNr.length() ; i ++){
			char c = matrNr.charAt(i);
			if(!Character.isDigit(c)){
				throw new Exception("Matrikelnummer soll nach kleinen buchstaben 7 ziffern haben");
			}
		}
			this.matrNr = matrNr;
	}
	
	public String getMatrNr(){
		return matrNr;
	}
	
	public String getName(){
		return name;
	}

}

Java:
package UniversitaetList;

import java.util.LinkedList;
import java.util.Iterator;

public class Universitaet {
	

	private String name;
	
	 LinkedList<Student> studenten = new LinkedList<Student>();
	
	public Universitaet(String name)throws Exception{
		if(name == null || name.trim().length() == 0){
			throw new Exception("Name darf nicht leer oder null sein");
		}
		for(int i = 0; i < name.length(); i++){
			char c = name.charAt(i);
			if(!Character.isLetter(c)|| !Character.isWhitespace(c)){
				throw new Exception("Name darf nur aus buchstaben oder leerzeichen bestehen");
			}
		}
		this.name = name;
	}
	
	public void immatrikulieren(Student st)throws Exception{
		if(st == null){
			throw new Exception("Student darf nicht null sein");
		}
		
		for(int i = 0; i < studenten.size();i++){
			Student  aktuellerStudent = studenten.get(i);
			if(aktuellerStudent.getMatrNr().equals(st.getMatrNr())){
				throw new Exception("Student  ist bereits immatrikuliert");
			}
		}
		studenten.add(st);
	}
	
	public void exmatrikulieren(Student st)throws Exception{
		if(st == null){
			throw new Exception("Student darf nicht null sein");
			
		}
		Iterator<Student> studentIterator = studenten.iterator();
		
		while(studentIterator.hasNext()){
			Student aktuallerStudent = studentIterator.next();
			if (aktuallerStudent.getMatrNr().equals(st.getMatrNr())) {
				studentIterator.remove();
				return;
			}
		}
			throw new Exception("Dieser Student ist nicht immatrikuliert.");
	}
	
	public String toString(){
		String ausgabe = "";
		Iterator<Student> studentenIterator = studenten.iterator();
		while(studentenIterator.hasNext()){
			ausgabe += studentenIterator.next().toString() ;
		}
		
		return ausgabe;	
	}

}

Java:
package UniversitaetList;

public class UniversitaetMain{
	public static void main(String args[]){
	
	try{
			Universitaet universitaet = new Universitaet("uniwien");
	
			universitaet.immatrikulieren(new Student("Markus ", "a1236767"));
			
			Student khato = new Student("khato", "a2467978");
			Student maria = new Student("maria", "a9874521");
			
			universitaet.immatrikulieren(khato);
			universitaet.immatrikulieren(maria);
		
			System.out.println(universitaet);
			
			universitaet.exmatrikulieren(maria);
			universitaet.exmatrikulieren(khato);
			
			System.out.println(universitaet);
	
	
	
	} catch(Exception e) {
			System.out.println(e.getMessage());
		}
	
	}

}
 

nata

Bekanntes Mitglied
ja aber worin?habe ich so lange herumgeschaut in diese zeile
ich überprüfe, wenn es nicht buchstabe und nicht leerzeichen ist dann fehler oder?
 

nata

Bekanntes Mitglied
tut mir leid aber ich kapiere irgendwie nicht :(
in der angabe ist so :"Der Name besteht nur aus Buchstaben, wobei mehrere Teile des Namens durch Leerzeichen getrennt werden können"
habe ich trotzdem nicht recht?
 

Das AlgoTool

Mitglied
Deine Abfrage verlangt, dass jedes Zeichen sowohl Buchstabe als auch Leerzeichen muss, denn wenn es entweder das eine oder das andere nicht ist, tritt ein Fehler auf.

Anders gesagt: Du hast und und oder verstauscht.
 

nata

Bekanntes Mitglied
ich habe auch so gemacht, aber liefert trotzdem den gleichen fehler :(
Java:
public void setName(String name)throws Exception{
		if(name == null || name.trim().length() == 0){
			throw new Exception("Name darf nicht leer oder null sein");
		}
		for(int i = 0; i < name.length(); i++){
			char c = name.charAt(i);
			if(!Character.isLetter(c) && !Character.isWhitespace(c)){
				throw new Exception("name darf nur leerzeichen oder buchstaben enthalten");
			}
		}
			this.name = name;	
	}
 

nata

Bekanntes Mitglied
ich weiß dass letzte post von mir ganz blöd war, aber dass hilft auch nicht
Java:
public void setName(String name)throws Exception{
		if(name == null || name.trim().length() == 0){
			throw new Exception("Name darf nicht leer oder null sein");
		}
		for(int i = 0; i < name.length(); i++){
			char c = name.charAt(i);
			if(Character.isLetter(c) || Character.isWhitespace(c)){
				this.name = name;
			}
		}
			throw new Exception("name darf nur leerzeichen oder buchstaben enthalten");
}
 

nata

Bekanntes Mitglied
jetzt liefert das mir null wert
ich habe in studenten noch toString methode eingebaut
 
Status
Nicht offen für weitere Antworten.

Oben