Also ich muss ehrlich gestehen, dass ich jetzt seit ca. 2 std mein Klasse debuge und den Fehler nicht finde, weshalb er nicht die korrekte Anzahl an Ausgaben macht, vermutlich bin ich einfach nur zu müde und blind....Vielleicht kann mir ja einer von euch auf die Sprünge helfen
Die Testklasse:
Meine Klassen:
Der Test:
Die Testklasse:
Java:
import java.io.*;
public class Test {
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
testeAufgabenverwaltung(in, 3);
}
public static void testeAufgabenverwaltung(BufferedReader in, int max) throws IOException {
Aufgabenverwaltung avw = new Aufgabenverwaltung(max);
String eingabe;
while(!(eingabe = in.readLine()).equals("")) {
switch(eingabe) {
case "toString":
System.out.println(avw);
break;
case "neueAufgabe":
System.out.println(avw.neueAufgabe(in.readLine(), Integer.parseInt(in.readLine())));
break;
case "aufgabe":
testeAufgabe(in, avw.aufgabe(Integer.parseInt(in.readLine())));
break;
default:
System.out.println("Befehl " + eingabe + " im Hauptmenue nicht bekannt!");
}
}
}
public static void testeAufgabe(BufferedReader in, Aufgabe a) throws IOException {
if(a==null) { System.out.println("null"); return; }
String eingabe;
while(!(eingabe = in.readLine()).equals("")) {
switch(eingabe) {
case "toString":
System.out.println(a);
break;
case "toStringPara":
System.out.println(a.toString(in.readLine()));
break;
case "neueTeilaufgabe":
System.out.println(a.neueTeilaufgabe(in.readLine(), Integer.parseInt(in.readLine())));
break;
case "teilaufgabe":
testeAufgabe(in, a.teilaufgabe(Integer.parseInt(in.readLine())));
break;
default:
System.out.println("Befehl " + eingabe + " im Menue von Aufgabe\n" + a+ "nicht bekannt!");
}
}
}
}
Meine Klassen:
Java:
import java.util.Arrays;
public class Aufgabenverwaltung {
private Aufgabe[] aufgaben;
private int anzahl;
public static int position = 0;
public Aufgabenverwaltung(int max) {
aufgaben = new Aufgabe[max];
anzahl = 0;
}
public boolean neueAufgabe(String text, int max) {
if (position > -1 && position < aufgaben.length && aufgaben[position] == null){
aufgaben [position] = new Aufgabe(text, max);
position++;
anzahl++;
System.out.println("Array mit neuer Aufgabe: " + Arrays.toString(aufgaben));
return true;
}
return false;
}
public Aufgabe aufgabe(int pos) {
if (pos > -1 && pos < aufgaben.length){
System.out.println("Aufgabe: " + aufgaben[pos]);
return aufgaben [pos];
}
return null;
}
}
Java:
import java.util.Arrays;
public class Aufgabe {
public int id;
public String name;
public Aufgabe[] jobs;
public static int currentID = 0;
public int position;
public Aufgabe (String name, int subJobs){
this.name = name;
this.id = currentID;
currentID++;
this.jobs = new Aufgabe[subJobs];
this.position = 0;
}
public boolean neueTeilaufgabe(String name, int subJobs){
if (this.position > -1 && this.position < this.jobs.length && this.jobs[position] == null){
this.jobs[this.position] = new Aufgabe (name, subJobs);
position++;
System.out.println("Array mit neuer Teilaufgabe: " + Arrays.toString(jobs));
return true;
}
return false;
}
public Aufgabe teilaufgabe (int pos) {
if (pos > -1 && pos < this.jobs.length){
System.out.println("Teilaufgabe: " + jobs[pos]);
return this.jobs[pos]; //Possible Problem
}
return null;
}
public String toString(String prefix){
String rat = prefix + this.name +" (ID: " + this.id + ")\n";
for (int i = 0; i < this.jobs.length; i++){
if (this.jobs[i] != null){
rat += this.jobs[i].toString(prefix + "--");
}
}
//rat += "\n";
System.out.println(Arrays.toString(jobs));
return rat;
}
public String toString(){
return toString("");
}
}
Der Test: