Paar Probleme mit 3 Klassen

Mensch_

Mitglied
Hallo, JAVA-Leute!

Ich möchte eine Aufgabe erledigen, und nämlich:
Es sollen drei Klassen geschrieben werden - Student; Tutorium; Sekretariat.
• Die Klasse Student mit folgenden Attributen: name, matrikelnummer.
• Einen Konstruktor public Student( String name, int matrikel ) für die Klasse Student mit
den entsprechenden Übergabeparametern zum Setzen der jeweiligen Attribute.
• Eine Methode public void ausgeben() in der Klasse Student. Gibt die Eigenschaften eines Stu-
dents auf dem Bildschirm aus.

Diese Klasse (Student) habe ich so gemacht (und denke, dass sie richtig ist):

Java:
public class Student{
   String name;
   int matrikelnummer;
	 public void ausgeben(){
	 Terminal.println(this.name+ " " +this.matrikelnummer);
	 }
public Student(String name, int matrikel){
	this.name = name;
	this.matrikelnummer = matrikel;
}
}

• Die Klasse Tutorium mit den Attributen raumNr, tutor, fach, und teilnehmer (dies soll ein Array
von Studenten sein).
• Einen Konstruktor public Tutorium( int kapazitaet, int raumNr, String tutor, String
fach ). kapazitaet bezeichnet die maximale Anzahl der Studenten in einem Tutorium. Ein bei der
Erzeugung leeres Tutorium wird mit Null-Referenzen gefüllt solange keine Studenten aufgenommen
sind.
• Eine Methode public void ausgeben() in der Klasse Tutorium. Gibt die Eigenschaften eines
Tutoriums und eine Liste der teilnehmenden Studenten auf dem Bildschirm aus.

Hier habe ich schon Probleme mit dem Attribut teilnehmer, das ein Array sein soll. Und auch mit der Liste der teilnehmenden Studenten - habe keine Ahnung wie ich das elegant machen kann:

Java:
public class Tutorium{
   int kapazitaet;
   int raumNr;
   String tutor;
   String fach;
   Student[] teilnehmer;
/* Ich bin nicht sicher, ob das Attribut teilnehmer so richtig definiert ist*/
   	public void ausgeben(){
	 	Terminal.println("Kapazität: "+this.kapazitaet+" RaumNummer: "+this.raumNr+" Tutor: "+this.tutor+" Fach: "+this.fach+");
		Terminal.println(...wie kann ich alle Teilnehmer ausgeben?...);
	 	}	
public Tutorium(int kapazitaet, int raumNr, String tutor, String fach){
	this.kapazitaet = kapazitaet;
	this.raumNr = raumNr;
	this.tutor = tutor;
	this.fach = fach;
}
}

• Die Klasse Sekretariat, zur Verwaltung von Tutorien. Darin sind folgende Methoden zu implemen-
tieren:
1. public static boolean istVoll( Tutorium t ). Überprüft ob noch freie Plätze im Tutorium
t vorhanden sind.
2. public static boolean studentAufnehmen( Tutorium t, Student st ). Nimmt einen
übergebenen Student st in dem Tutorium t auf, falls das möglich ist. Die Methode soll
zurückgeben, ob die Aufnahme möglich war.

Java:
public class Sekretariat{
public static boolean istVoll( Tutorium t ){
	if Tutorium.kapaziteat < ... Anzahl von Teilnehmer...{
	return true;
	}else{
	return false;
	}
}

public static boolean studentAufnehmen( Tutorium t, Student st ){
 /* Hier habe ich schon keine Ahnung, wie ich weitergehen muss/*

Diese Klassen sollen mit diesem Programm getestet werden:
Java:
public class TutVerwaltung{

  public static void main(String args[]){
    Tutorium pprJ = new Tutorium( 30, 6057, "Mareike", "PPR Java" );
    Tutorium pprX = new Tutorium( 2, 0000, "Snoop Dogg", "PPR Xclusive" );
    Student lw = new Student( "Lil Wayne", 123456 );
    Student br = new Student( "Busta Rhymes", 234567 );
    Student ch = new Student( "Cypress Hill", 345678 );
    Sekretariat.studentAufnehmen( pprX, lw );
    Sekretariat.studentAufnehmen( pprX, br );
    if ( !Sekretariat.istVoll( pprX ) ) Terminal.println( "Hier sollte PPR-Xclusive wirklich schon voll sein.");
    if ( Sekretariat.studentAufnehmen( pprX, ch ) ) Terminal.println( "Cypress darf gar nicht rein! Bitte ändere deinen Code entsprechend.");
    else {
      Terminal.println( "Ich muss leider draußen bleiben: " );
      ch.ausgeben();
    }
    char mehr = 'n';
    while ( true ){
      mehr = Terminal.askChar( "Was nun? [s]tudent in ppr aufnehmen / [t]eilnehmerliste für ppr Java anzeigen / Teilnehmerliste für ppr [x]clusive anzeigen / [b]eenden " );
      if ( mehr == 's' ){
        String name = Terminal.askString( "Wie heißt der Student? " );
        int matr = Terminal.askInt( "Wie ist seine Matrikelnummer?" );
        Student newStudent = new Student( name, matr );
        if ( !Sekretariat.studentAufnehmen( pprJ, newStudent ) )
          Terminal.println( "Leider ist das Tutorium voll." );
      }
      else if ( mehr == 't' ) pprJ.ausgeben();
      else if ( mehr == 'x' ) pprX.ausgeben();
      else break;
    }
  }

}

Ich wäre sehr dankbar, wenn mir jemand erklärt, wie das alles aussehen soll - ich bin schon verzweifelt. Probiere schon 6 Stunden diese Aufgabe zu machen und habe noch gar keine Idee. :(
 

rme

Top Contributor
Hallo :)

Die 1. Klasse ist schonmal richtig.

Die Art, wie du die Teinehmer deklariert hast, ist auch richtig. Allerdings sollte der Konstruktor dafür sorgen, dass das Array auch eine bestimmte Größe bekommt - momentan hast du nur den Namen des Arrays reserviert. Es fehlt im Konstruktor noch, dass du auch Platz für die Teilnehmer innerhalb des Arrays reservierst. Um dir nicht die direkte Lösung zu verraten, zeige ich dir das mal an einem Beispiel mit einem int-Array:

Java:
int[] array; // legt Namen für das Array an
array = new int[10]; // legt das eigentliche Array mit 10 null-Elementen an

Das musst du nun auf dein Beispiel übertragen, sodass im Konstruktor Platz im Array reserviert wird, vermutlich abhängig vom Parameter "kapazitaet".

Für die Ausgabe des Arrays kannst du eine Schleife verwenden. So würde man zum Beispiel das obige int-Array ausgeben können:
Java:
for(int x : array) { // für jedes x im Array
  System.out.println(x); // gib x aus
}

Versuch mal, diese Sachen umzusetzen und dann schauen wir weiter :)
 
Zuletzt bearbeitet:

Mensch_

Mitglied
Vielen Dank für die schnelle Antwort! Deine Information hat mir geholfen. Jetzt sieht meine Klasse Tutorium so aus:
(als Komentare habe ich geschrieben warum ich so gemacht habe) :)

Java:
public class Tutorium{
   int kapazitaet;
   int raumNr;
   String tutor;
   String fach;
   Student[] teilnehmer;
   	public void ausgeben(){
	 	Terminal.println("Kapazität: "+this.kapazitaet+" RaumNummer: "+this.raumNr+" Tutor: "+this.tutor+" Fach: "+this.fach+");
	for(Student x : teilnehmer){  /* für jedes Element vom Typ Student aus Array teilnehmer  */		
        Terminal.println(x);
	 }
	 }
public Tutorium(int kapazitaet, int raumNr, String tutor, String fach){
	this.kapazitaet = kapazitaet;
	this.raumNr = raumNr;
	this.tutor = tutor;
	this.fach = fach;
	this.teilnehmer = new Student[this.kapaziteat] // reservieren in Arry Platz entsprechend der Kapazitätsgröße
}
}
 
Zuletzt bearbeitet:

rme

Top Contributor
Perfekt, alles richtig gemacht! :) Aus ästhetischen Gründen könntest du deine Variable im Array aber gern "student" statt "x" nennen, das wäre etwas hübscher.

Die erlaubten Attribute sind vorgegeben, d.h. du darfst keine neue hinzufügen, oder? Dann musst du dir überlegen, wie du nun eigentlich die Anzahl der bereits eingetragenen Studenten rausfinden kannst, damit du prüfen kannst, ob die Kapazität schon erschöpft ist. Normalerweise würde man das in einem weiteren Attribut speichern, aber zu Übungszwecken ist das vermutlich verboten.. Tipp deshalb: Du könntest mit einer Schleife das Array durchgehen und zählen, wie viele Elemente nicht null sind - das entspricht dann am Ende ja genau der Anzahl der Studenten und lässt sich mit der Kapazität vergleichen.. :)
 

Mensch_

Mitglied
Dank deiner Hilfe, denke ich das, dass erste Method schon besser aussieht:

Java:
public class Sekretariat{
public static boolean istVoll( Tutorium t ){
	for (int x = 0; i < Tutorium.teilnehmer.length; i++){
	    if(Tutorium.teilnehmer[i] != 0){
	    int anzahl += 1;
	    }
	}
	if Tutorium.kapaziteat < anzahl{
	return true;    /* ich schaue das Programm TutVerwaltung und weiß nicht was für Werte von mir erwartet sind ? */
	}else{
	return false;
	}
 
Zuletzt bearbeitet:

rme

Top Contributor
Die Idee ist genau richtig umgesetzt, allerdings 3 kleine Probleme:

  • Du legst die Variable "anzahl" in der Schleife jedesmal neu an. Dadurch kann sie nicht wirklich zählen, weil sie für jeden Studenten neu angelegt wird. Einfache Abhilfe: Vor der Schleife die Variable anlegen, in der Schleife zählen, nach der Schleife auswerten :) Achja, die Schleifenvariable heißt mal x und mal i - du musst dich auf einen Namen einigen, i ist da Konvention. Und leere Einträge sind "null", nicht "0" - 0 wäre eine Zahl, null ist ein spezielles Platzhalter für sowas.
  • Bei der if-Abfrage fehlen die runden Klammern
  • der Name deiner Klasse ist Tutorium, aber die Klasse ansich hat keine Teilnehmer - die Teilnehmer sind in den Objekten (Instanzen) der Klasse gespeichert. Deshalb erfolgt der Zugriff immer über die Instanz, nicht über die Klasse. Will sagen: Sowas wie t.kapazitaet nutzen, nicht Tutorium.kapazitaet

Die nächste Aufgabe ist vermutlich, einen Studenten dem Array hinzuzufügen. Dazu musst du als erstes die nächste freie Position im Array berechnen - wie das geht, hast du ja mittlerweile verstanden :) - und ihn dann dort eintragen. Das geht allgemein so:

Java:
array[index] = wert;

Bedenke dabei, dass das erste Element an Position 0 ist, d.h. bei Kapazität 3 gehen die Indizes von 0 bis einschließlich 2, der Index 3 ist schon nicht mehr gültig. Aber da du das in deiner for-Schleife schon berücksichtigt hast, ist dir das vermutlich bekannt :)

Edit: Noch ein drittes Problem nachgetragen. Und beim Rückgabewert überlegen, ob wirklich < oder vielleicht <= gemeint ist ;)
 
Zuletzt bearbeitet:

Mensch_

Mitglied
Als Kommentare habe ich meine neue Problemme hinzugefügt:

Java:
public class Sekretariat{
  public static boolean istVoll( Tutorium t ){
	int anzahl;	
	for (int i = 0; i < t.teilnehmer.length; i++){
	    if(t.teilnehmer[i] != null){
	    anzahl += 1;
	    }
	}
	if (t.kapaziteat <= anzahl){
	return true;    
	}else{
	return false;
	}
  }
  public static boolean studentAufnehmen( Tutorium t, Student st ){
	for (int i = 0; i < t.teilnehmer.length; i++){
	    if(t.teilnehmer[i] == null){
	    t.teilnehmer[i] = st; /* Hier aber kommt das Problem, dass jede freie Position mit dem gleichem Student st gefüllt wird? */
	    Terminal.println("Die Annahme war möglich");
            break; /* und wenn ich hier break benutze, dann löse ich schon das obige Problem? */      	      
		}else{
	            Terminal.println("Die Annahme war unmöglich");
	 }
}
 
Zuletzt bearbeitet:

rme

Top Contributor
Das sieht schon ziemlich gut aus, du bist ja fast fertig :) In der Methode istVoll sehe ich keinen Fehler mehr.

Deine Idee für die Umsetzung von studentAufnehmen ist auch gut. Allerdings musst du bedenken, dass das if in der Schleife von jedem Element durchlaufen wird. Nehmen wir mal an, es ist ein Student vorhanden und teilnehmer[1] noch null. Dann fängt die Schleife beim index 0 an, die if-Abfrage stellt fest, dass teilnehmer[0] == null falsch ist und führt deshalb den else-Zweig aus, wo "unmöglich" ausgegeben wird. Dabei kann an dieser Stelle noch nicht entschieden werden, ob die Aufnahme möglich wäre.

Möchtest du da selbst nochmal drüber nachdenken? Falls du nach den vielen Stunden keine Motivation mehr hast und lieber einen rettenden Tipp hättest, wär das aber auch Ok, du hast ja schon ganz viel selbstgemacht mittlerweile :)

Da du mit break die Schleife verlässt, wird übrigens kein Student doppelt eingetragen, das Problem hast du dadurch schon gelöst.
 
Zuletzt bearbeitet:

Mensch_

Mitglied
Vielleicht gibt es eine bessere Variante das zu machen, aber ich denke, dass so aucht funktionieren wird.
Java:
public class Sekretariat{
  public static boolean istVoll( Tutorium t ){
	int anzahl;	
	for (int i = 0; i < t.teilnehmer.length; i++){
	    if(t.teilnehmer[i] != null){
	    anzahl += 1;
	    }
	}
	if (t.kapaziteat <= anzahl){
	return true;    
	}else{
	return false;
	}
  }
  public static boolean studentAufnehmen( Tutorium t, Student st ){
	for (int i = 0; i < t.teilnehmer.length; i++){
	    if(t.teilnehmer[i] == null){
	    t.teilnehmer[i] = st; 
	    Terminal.println("Die Annahme war möglich");
            break;       	      
	    }          
	 }
	    if(t.teilnehmer[t.kapazität] != null){   /* Wenn die letzte Position nicht leer ist, dann gibt es keine Annahme, da alles schon voll ist. */
	    Terminal.println("Die Annahme war unmöglich");
	    }
  }
}
 

rme

Top Contributor
Hm. Das wird nicht so ganz funktionieren:

  • Wenn dein Array die Größe 6 hat, gehen die Elemente von 0 bis 5 (nachzählen: 0, 1, 2, 3, 4, 5: 6 Elemente). Also auch: Wenn dein Array die Größe "kapazitaet" hat, gehen die Elemente von 0 bis kapazitaet - 1. Das müsstest du also anpassen, sonst bekommst du beim Ausführen eine ArrayIndexOutOfBoundsException.
  • Was ist, wenn der letzte Student hinzugefügt wurde? Dann ist die Kapazität ja genau erreicht, du würdest den Fall aber nicht erlauben.

Achja, in der Aufgabenstellung steht für diese Aufgabe "zurückgeben", nicht "ausgeben" - du sollst also so wie bei istVoll mit return zurückgeben, ob es geklappt oder nicht geklappt hat ;)

Tipp: Du könntest in der Schleife "return true;" statt break machen, dann wird nach dem Hinzufügen die ganze Methode verlassen. Welche Bedeutung hat es dann, falls der Programmfluss das Ende der Schleife erreicht? Und was kannst du dort deshalb tun?

Andere Variante: deine istVoll-Methode benutzen, um vorher zu prüfen, ob es gehen würde - ansonsten schonmal mit Nein beenden.
 

Mensch_

Mitglied
Schon habe ich vielleicht nur teilweiße die Probleme beseitigt:

Java:
public class Sekretariat{
  public static boolean istVoll( Tutorium t ){
	int anzahl;	
	for (int i = 0; i < t.teilnehmer.length; i++){
	    if(t.teilnehmer[i] != null){
	    anzahl += 1;
	    }
	}
	if (t.kapaziteat <= anzahl){
	return true;    
	}else{
	return false;
	}
  }
  public static boolean studentAufnehmen( Tutorium t, Student st ){
	for (int i = 0; i <= t.teilnehmer.length; i++){  /* es muss <= sein, um auch die letzte Position zu füllen */
	    if(t.teilnehmer[i] == null){
	    t.teilnehmer[i] = st; 
	    Terminal.println("Die Annahme war möglich");
            return true;       	      
	    }          
	 }
	    if(t.teilnehmer[t.kapazität - 1] != null){   
	    Terminal.println("Die Annahme war unmöglich");
	    return false;
	    }
  }
}
 

rme

Top Contributor
Die Ausgabe auf dem Terminal ist nicht nötig, das macht die Testklasse ja schon :)

Überleg dir mal, ob die if-Abfrage nach der Schleife wirklich nötig ist. Unter welchem Umständen gelangt die Ausführung überhaupt hinter die Schleife?

So sollte es aber auch funktionieren, wenn da kein Fehler mehr ist, bist du jetzt fertig! :) Der nächste Schritt wäre es, den Code mal zu kompilieren und zu schauen, was die Testklasse dazu sagt :)
 

Mensch_

Mitglied
Ich kann direkt return false schreiben, da die Ausführung gelangt nur dann hinter der Schleife, wenn alle Positionen schon nicht frei sind.

Java:
public class Sekretariat{
  public static boolean istVoll( Tutorium t ){
	int anzahl;	
	for (int i = 0; i < t.teilnehmer.length; i++){
	    if(t.teilnehmer[i] != null){
	    anzahl += 1;
	    }
	}
	if (t.kapaziteat <= anzahl){
	return true;    
	}else{
	return false;
	}
  }
  public static boolean studentAufnehmen( Tutorium t, Student st ){
	for (int i = 0; i <= t.teilnehmer.length; i++){  
	    if(t.teilnehmer[i] == null){
	    t.teilnehmer[i] = st; 
            return true;       	      
	    }          
	 }	 
	    return false;
  }
}

Und ich habe zwei komischen Fehler, wenn ich die Klasse Tutorium kompilieren möchte:

Java:
public class Tutorium{
   int kapazitaet;
   int raumNr;
   String tutor;
   String fach;
   Student[] teilnehmer;
   	public void ausgeben(){
	 	System.out.println("Kapazität: "+this.kapazitaet+" RaumNummer: "+this.raumNr+" Tutor: "+this.tutor+" Fach: "+this.fach);
	for(Student student : teilnehmer) { 		
		System.out.println(student);
	 	}
	}	
  public Tutorium(int kapazitaet, int raumNr, String tutor, String fach){
	this.kapazitaet = kapazitaet;
	this.raumNr = raumNr;
	this.tutor = tutor;
	this.fach = fach;
	this.teilnehmer = new Student[this.kapaziteat]; 
  }
}



Tutorium.java:18: error: cannot find symbol
this.teilnehmer = new Student[this.kapaziteat];
^ Symbol . (Punkt)
symbol: variable kapaziteat
1 errors
 
Zuletzt bearbeitet:

rme

Top Contributor
Das mit dem return false hast du richtig erkannt :)

Der 1. Fehler liegt daran, dass die Methode nur Strings ausgeben kann. Aber du könntest ja einen String zusammenbauen, so wie zwei Zeilen darüber. Beispielsweise könntest du student.name und so ausgeben.

Der 2. Fehler ist nur ein Tippfehler: kapazitaet <> kapaziteat ;)
 

Mensch_

Mitglied
Vielen Dank! Alles funktioniert perfekt bis auf die Println, dann bekomme ich für die Teilnehmer:
Student@3605966f
null
null
null
...

Und nicht Name und Matrikelnummer, vielleicht muss ich irgendwo Character.toString benutzen. Ich habe probiert auch in der Klasse Student im Println vor die Variablen (String) und (int) zu schreiben aber geht auch nicht.

Ansonsten ist alles perfekt! VIELEN DANK! Das war besser als eine Sprechstunde mit dem Professor.
 

rme

Top Contributor
Freut mich, dass es dir hilft :) Dann zeig mal den Code, der diese Ausgaben erzeugt. Vielleicht ruftst du irgendwo println mit einem Studenten oder einem Array auf? Das geht nicht so gut.
 

Mensch_

Mitglied
Das sind alle Code (oder verstehe ich nicht, was mit Code gemeint ist) :

Java:
public class Student{
   String name;
   int matrikelnummer;
	 public void ausgeben(){
	 System.out.println((String)this.name+ " " +(int)this.matrikelnummer);
	 }
  public Student(String name, int matrikel){
	this.name = name;
	this.matrikelnummer = matrikel;
  }
}

Java:
public class Tutorium{
   int kapazitaet;
   int raumNr;
   String tutor;
   String fach;
   Student[] teilnehmer;
   	public void ausgeben(){
	 	System.out.println("Kapazität: "+this.kapazitaet+" RaumNummer: "+this.raumNr+" Tutor: "+this.tutor+" Fach: "+this.fach);
	for(Student student : teilnehmer) { 		
		System.out.println(student);
	 	}
	}	
  public Tutorium(int kapazitaet, int raumNr, String tutor, String fach){
	this.kapazitaet = kapazitaet;
	this.raumNr = raumNr;
	this.tutor = tutor;
	this.fach = fach;
	this.teilnehmer = new Student[this.kapazitaet]; 
  }
}

Java:
public class Sekretariat{
  public static boolean istVoll( Tutorium t ){
	int anzahl = 0;	
	for (int i = 0; i < t.teilnehmer.length; i++){
	    if(t.teilnehmer[i] != null){
	    anzahl += 1;
	    }
	}
	if (t.kapazitaet <= anzahl){
	return true;    
	}else{
	return false;
	}
  }
  public static boolean studentAufnehmen( Tutorium t, Student st ){
	for (int i = 0; i < t.teilnehmer.length; i++){  
	    if(t.teilnehmer[i] == null){
	    t.teilnehmer[i] = st; 
            return true;       	      
	    }          
	 }	 
	    return false;
  }
}

Java:
public class TutVerwaltung{

  public static void main(String args[]){
    Tutorium pprJ = new Tutorium( 30, 6057, "Mareike", "PPR Java" );
    Tutorium pprX = new Tutorium( 2, 0000, "Snoop Dogg", "PPR Xclusive" );
    Student lw = new Student( "Lil Wayne", 123456 );
    Student br = new Student( "Busta Rhymes", 234567 );
    Student ch = new Student( "Cypress Hill", 345678 );
    Sekretariat.studentAufnehmen( pprX, lw );
    Sekretariat.studentAufnehmen( pprX, br );
    if ( !Sekretariat.istVoll( pprX ) ) Terminal.println( "Hier sollte PPR-Xclusive wirklich schon voll sein.");
    if ( Sekretariat.studentAufnehmen( pprX, ch ) ) Terminal.println( "Cypress darf gar nicht rein! Bitte aendere deinen Code entsprechend.");
    else {
      Terminal.println( "Ich muss leider draussen bleiben: " );
      ch.ausgeben();
    }
    char mehr = 'n';
    while ( true ){
      mehr = Terminal.askChar( "Was nun? [s]tudent in ppr aufnehmen / [t]eilnehmerliste fuer ppr Java anzeigen / Teilnehmerliste fuer ppr [x]clusive anzeigen / [b]eenden " );
      if ( mehr == 's' ){
        String name = Terminal.askString( "Wie heisst der Student? " );
        int matr = Terminal.askInt( "Wie ist seine Matrikelnummer? " );
        Student newStudent = new Student( name, matr );
        if ( !Sekretariat.studentAufnehmen( pprJ, newStudent ) )
          Terminal.println( "Leider ist das Tutorium voll." );
      }
      else if ( mehr == 't' ) pprJ.ausgeben();
      else if ( mehr == 'x' ) pprX.ausgeben();
      else break;
    }
  }

}
 

rme

Top Contributor
Zeile 10 im Tutorium ist das Problem: Da hast du ein println(student). Aber weil das System nicht weiß, wie man einen Studenten ausgibt, bekommst du diese komische Zeile mit dem @-Zeichen. Das kannst du beheben, indem du es so wie zwei Zeilen darüber machst: student.name und so getrennt ausgeben, nicht den ganzen Studenten auf einmal :)

Achja, und weil da auch null-Element im Array sein können, musst du die Ausgabe in der Schleife in eine if-Anweisung verstecken, damit die null-Elemente übersprungen werden. Sonst bekommst du beim Zugriff auf student.name eine NullPointerException, weil man auf null nicht zugreifen kann.

Danach hast du dir echt einen schönen Abend verdient, hoffentlich hat es dir mittlerweile trotzdem ein bisschen Spaß gemacht, damit dich zukünftige Aufgaben nicht demotivieren oder dir Angst machen :)
 

gescom

Mitglied
erst mal ein Lob an beide!

Ich versuche momentan mich mehr mit Java zu beschäftigen, dann macht das Spaß mal so einem Thread zu folgen.
Nun muss ich aber bei letztem Problem meinen Senf dazu geben :D
Du könntest/solltest eine toString() Methode in der Klasse Students überschreiben. Also im Prinzip sieht die wie dein ausgeben() aus nur überschreibst du eben toString aus der java.lang.
Ist nur so eine kleine Anmerkung vielleicht hilft es dir ja auch weiter.
 

rme

Top Contributor
Das wäre natürlich die beste Lösung :) Ich hab die Aufgabenstellung im 1. Beitrag allerdings so verstanden, dass die Methoden schon vorgegeben waren und keine eigenen verwendet werden dürfen.

Edit: Nochmal gelesen - Student soll sogar eine Methode ausgabe() haben, die die Daten ausgibt. Diese Methode fehlt dir noch. Du könntest danach auch einfach student.ausgabe() in der Schleife benutzen :)
 
Zuletzt bearbeitet:

Mensch_

Mitglied
Mit den Anweisungen von rme habe ich es schon geschafft! :

So muss die Klasse Tutorium aussehen:

Java:
public class Tutorium{
   int kapazitaet;
   int raumNr;
   String tutor;
   String fach;
   Student[] teilnehmer;
   	public void ausgeben(){
	 	System.out.println("Kapazität: "+this.kapazitaet+" RaumNummer: "+this.raumNr+" Tutor: "+this.tutor+" Fach: "+this.fach);
	for(Student student : teilnehmer) {
		if(student != null){ 		
		System.out.println(student.name+ " " +student.matrikelnummer);
		}	 	
		}
	}	
  public Tutorium(int kapazitaet, int raumNr, String tutor, String fach){
	this.kapazitaet = kapazitaet;
	this.raumNr = raumNr;
	this.tutor = tutor;
	this.fach = fach;
	this.teilnehmer = new Student[this.kapazitaet]; 
  }
}

Vielen Dank! Schon weiß ich bei Problem, wo ich Hilfe bekommen kann. :idea:
 
Zuletzt bearbeitet:

rme

Top Contributor
Perfekt! :)

Die Aufgabenstellung will allerdings, dass in Student eine Methode ausgabe() ist, die das erledigt. Da kannst du einfach den Code (die eine Zeile) reinkopieren und dann in der if-Abfrage student.ausgabe() aufrufen.

Aber ansich bist du jetzt fertig und hast bis auf ein paar Anregungen und Erklärungen alles selbst gemacht.. :)
 
Zuletzt bearbeitet:

Mensch_

Mitglied
Ja, du hast wieder Recht! So geht es auch:

Java:
...
for(Student student : teilnehmer) {
		if(student != null){ 		
		student.ausgeben();
		}	 	
		}
...
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Java ist / wird kostenpflichtig. Ein paar Fragen Java Basics - Anfänger-Themen 1
G Ein paar Anfänger Fragen zu StdDraw Java Basics - Anfänger-Themen 4
P Erste Schritte Bitte ein paar Erklärungen zu meinem Code Java Basics - Anfänger-Themen 6
Azazel Ein paar Fragen zu Methodenaufrufen(java.awt) Java Basics - Anfänger-Themen 2
S Integer/Value-Paar in Prio-Queue ohne Comparator Java Basics - Anfänger-Themen 5
T Ein paar Fragen zu OOP und Java. Java Basics - Anfänger-Themen 16
D Bild für ein paar Sekunden einblenden und wieder ausblenden Java Basics - Anfänger-Themen 1
C Array - Ein paar Verständnisfragen Java Basics - Anfänger-Themen 9
K BufferedWriter schreibt die letzten paar Zeilen nicht Java Basics - Anfänger-Themen 5
K Java Anfänger und paar Fragen=D Java Basics - Anfänger-Themen 7
J Paar Fragen zu Exceptions Java Basics - Anfänger-Themen 16
I Ein paar Kleinigkeiten Java Basics - Anfänger-Themen 11
C Umsteiger hat noch ein paar Fragen Java Basics - Anfänger-Themen 11
StrikeTom Ein paar(2) Fragen zu throws und try + catch Java Basics - Anfänger-Themen 6
Luk10 Datentypen Werte-Paar Java Basics - Anfänger-Themen 4
B Paar kleine Grundsatzfragen zu Java Java Basics - Anfänger-Themen 5
Nicer ! Problem nach paar Bierchen erkannt aber nicht gebannt ! Java Basics - Anfänger-Themen 7
I Ein paar Syntaxfragen... Java Basics - Anfänger-Themen 3
T ein paar fragen Java Basics - Anfänger-Themen 10
D Arrays und paar Möglichkeiten mit denen Java Basics - Anfänger-Themen 3
Antoras Ein paar theoretische Fragen Java Basics - Anfänger-Themen 19
G Brauche ein paar erklärungen zu Quelltext Java Basics - Anfänger-Themen 5
A Primzahlen: ein paar offene Fragen Java Basics - Anfänger-Themen 2
A paar bilder auf einmal Java Basics - Anfänger-Themen 3
A Paar Fragen zu Applet u.a. Java Basics - Anfänger-Themen 2
R Strings und dazu ein paar methoden Java Basics - Anfänger-Themen 12
A taschenrechner mit radioButtons aber ein paar problemen Java Basics - Anfänger-Themen 5
0x7F800000 Ein paar noob-fragen zu java ME Java Basics - Anfänger-Themen 5
G Threads brauche da gilfe für paar fragen Java Basics - Anfänger-Themen 5
V Könnt ihr mal über Paar antworten schauen(Hausaufgaben) Java Basics - Anfänger-Themen 7
S ein paar kleine Fragen Java Basics - Anfänger-Themen 4
G Hoffe jemand kann mir ein paar Tips geben:binärer Suchbaum Java Basics - Anfänger-Themen 3
R Noch ein paar Anfängerfragen. Java Basics - Anfänger-Themen 4
N ein paar L&F Fragen Java Basics - Anfänger-Themen 7
S Ein paar Anfängerfragen Java Basics - Anfänger-Themen 17
S ein paar Fragen - mit KSKB Java Basics - Anfänger-Themen 16
M Zeilenausgabe auf ein paar Zeichen begrenzen Java Basics - Anfänger-Themen 2
A Habt ihr ein paar ideen für Programme? Java Basics - Anfänger-Themen 8
G Doppelte (Paar) Werte in einem Vektor finden Java Basics - Anfänger-Themen 6
B Bräuchte ein paar Sachen für mein Clientprogramm! Java Basics - Anfänger-Themen 6
megachucky Suche ein paar gute Tutorials so wie dieses hier. Java Basics - Anfänger-Themen 4
P Bitte um ein paar Tipps! (Threads, Warten auf Ereignisse,.) Java Basics - Anfänger-Themen 2
G Ein paar Definitionsfragen Java Basics - Anfänger-Themen 4
B Paar richtige Anfängerfragen Java Basics - Anfänger-Themen 7
D Rekursions Probleme / frage Java Basics - Anfänger-Themen 4
P JDK installieren Probleme bei der Java-Installation Java Basics - Anfänger-Themen 8
C Probleme mit Byte konvertieren nach int Java Basics - Anfänger-Themen 10
P Probleme mit NetBeans: Wie lässt sich jar. Datei an einem MacBook öffnen Java Basics - Anfänger-Themen 21
I Projekte in IDE untereinander sharen / Probleme beim Build Java Basics - Anfänger-Themen 8
MiMa Probleme mit Datentyp long ?? Java Basics - Anfänger-Themen 2
T Probleme beim Import eines Git-Repos Java Basics - Anfänger-Themen 2
Jxhnny.lpz TicTacToe Spiel vs Computer. (Probleme) Java Basics - Anfänger-Themen 7
B Quiz mit RMI Probleme mit RMI start Java Basics - Anfänger-Themen 4
httprt Probleme bei dem erstellen von leveln in meinem Spiel Java Basics - Anfänger-Themen 2
berserkerdq2 Habe eine Klasse, welche public ist, diese hat eine public Methode, die nicht static ist. Wenn ich nun versuche aufzurufen Probleme? Java Basics - Anfänger-Themen 8
V Probleme Guessing Game Java Basics - Anfänger-Themen 8
hebein PDF Ausdruck auf Drucker - Probleme mit Format Java Basics - Anfänger-Themen 17
R JMenu/JMenuItem Probleme Java Basics - Anfänger-Themen 2
B Static vs non static und Probleme daraus Java Basics - Anfänger-Themen 13
J Probleme mit dem Debugger Java Basics - Anfänger-Themen 4
I Probleme mit OutputStream - Datei lässt sich nicht öffnen Java Basics - Anfänger-Themen 4
J Probleme mit Kompilierung Java Basics - Anfänger-Themen 11
B Probleme mit Zugriff auf Dateisystem Windows 10 ( jFileChooser) Java Basics - Anfänger-Themen 17
W Objekte über Scanner Input; ToString Probleme... Java Basics - Anfänger-Themen 4
C Probleme mit paintComponent Java Basics - Anfänger-Themen 13
P Probleme mit JUnit-Tests, es kommt was anderes raus als bei manuellen Tests Java Basics - Anfänger-Themen 5
E JavaFX Editor Probleme mit der Zwischenablage Java Basics - Anfänger-Themen 12
C Probleme mit dem Erstellen und Importieren von Packages Java Basics - Anfänger-Themen 6
3 OOP erste Versuche, OOP zu verstehen. Probleme mit gettern und settern Java Basics - Anfänger-Themen 4
R Erste Schritte Probleme bei 2D Spielfeld, mit einzufügender "Person" Java Basics - Anfänger-Themen 5
P Probleme bei der Installation von JavaFX Java Basics - Anfänger-Themen 3
S Mehrere Probleme im Code Java Basics - Anfänger-Themen 7
D Probleme mit JFrame und der Größe Java Basics - Anfänger-Themen 8
Dimax String Probleme Java Basics - Anfänger-Themen 12
N Probleme beim printen von Arrays durch for Schleife Java Basics - Anfänger-Themen 3
Splayfer Java Array Probleme Java Basics - Anfänger-Themen 3
J Probleme bei IllegalArgumentException "werfen". Java Basics - Anfänger-Themen 1
K Probleme bei der Ausgabe - komme nicht weiter :/ Java Basics - Anfänger-Themen 15
X Probleme im Umgang mit PriorityQueue Java Basics - Anfänger-Themen 75
D Probleme mit dem Windowbuilder und JComboBox Java Basics - Anfänger-Themen 2
M Regex Probleme (mal wieder) Java Basics - Anfänger-Themen 3
tom.j85 TicTacToe - probleme beim Casten Java Basics - Anfänger-Themen 6
J Probleme mit Vererbung Java Basics - Anfänger-Themen 4
X Probleme mit Übungsaufgaben zu Zahlentypen Java Basics - Anfänger-Themen 4
G Probleme bei Aufgabe Java Basics - Anfänger-Themen 12
P Erste Schritte Probleme mit dem Programmieren Java Basics - Anfänger-Themen 12
B Probleme bei einer Aufgabe Java Basics - Anfänger-Themen 19
Franzi1001 Probleme mit Eclipse Java Basics - Anfänger-Themen 7
T Probleme bei Installation von JDK Java Basics - Anfänger-Themen 2
C Probleme mit String-Vergleich Java Basics - Anfänger-Themen 4
C Probleme bei Regex Java Basics - Anfänger-Themen 9
V Probleme mit Arrays Java Basics - Anfänger-Themen 8
D Kleine Probleme mit Split-Befehlen Java Basics - Anfänger-Themen 5
T Probleme mit Strings Java Basics - Anfänger-Themen 6
G Probleme bei Frame aufgaben Java Basics - Anfänger-Themen 6
N Probleme mit dem ActionListener Java Basics - Anfänger-Themen 4
D Probleme beim Kompelieren mache ich etwas falsch ? Java Basics - Anfänger-Themen 3
L Probleme mit Java Java Basics - Anfänger-Themen 3
S Probleme mit abspielen einer .wav Datei Java Basics - Anfänger-Themen 2
J Probleme bei der Umwandlung einer Farbe von Hex zu RGB Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben