Methoden 2 D-Array Belegungsplan textuell ausgeben

Mikesh

Mitglied
Hallo an alle,

ich habe ein eher hoffentlich kleines Problem, bei welchem mir jedoch der Denkanstoß fehlt.
Ich habe in Java einen Raumbelegungsplan realisiert mit verschiedenen Methoden( Raum reservieren, schauen ob der Raum zu einem gewissen Zeitpunkt frei ist usw.). Als letzte Methode hätte ich gerne eine die mir den Plan textuell ausgibt. Leider komme ich nicht ganz dahinter... Anhand 2er For-Schleifen bekomme ich es hin mir den Plan in Tabellenform auszugeben. Textuell sollte das ganze ca. so aussehen(Zeilen= Blöcke, Spalten = Tage, array[6][5]):

"Reservierung für Raum A123
Montag:
2. Block: Prog2
3. Block: Prog2
Dienstag:
4. Block: Mathe2
Mittwoch:
keine Reservierung
Donnerstag:
1. Block: Mathe2
Freitag:
6. Block: Prog2"

Wenn ein Tag komplett leer ist soll die Methode einfach "keine Reservierung ausgeben".

Meine Idee war es jetzt jede Spalte per Schleife zu durchlaufen und dann per If-Anweisung z.b
Code:
if(belegungsplan[spalte][zeile] != null){
        System.out.print(belegungsplan[spalte][zeile]
      }

die Werte des jeweiligen Index auszugeben. Das funktioniert allerdings nur bedingt.

Wäre für jeden Tipp und Gedankenanstoß dankbar. Google hat mich da jetzt auch nicht wirklich weitergebracht, vielleicht habe ich aber auch nur nach dem falschen gesucht....

Beste Grüße
Mikesh
 
Also der Code zur Ausgabe der Tabelle schaut aktuell so aus :
Code:
for(int zeile = 0; zeile< belegungsplan.length; zeile ++){
             for(int spalte = 0; spalte < belegungsplan[zeile].length; spalte ++){
                 System.out.print(belegungsplan[zeile][spalte] + "\t");
             }
             System.out.println();
         }
Ich vermute mal dass ich Spalte und Zeile tauschen kann, damit ich immer erst eine komplette Spalte durchgehe?
Achja und ich muss dass Array nochmals vergrößern dass ich Wochentage und die Blöcke hinzufügen kann, ist mir gerade aufgefallen(wobei das ja am Grundproblem nichts ändert)
 
Also sieht dein Array bspw. so aus?
Code:
array = {
     // Montag
     { Prog, Mathe, Informatik },
     // Dienstag
     { ..., ...., ... },
     ....
};
Achja und ich muss dass Array nochmals vergrößern dass ich Wochentage und die Blöcke hinzufügen kann,
Wenn ich dir einen Tipp geben darf bevor du dich weiter mit der Ausgabe beschäftigst:
Anstatt das Array zu vergrößern würde ich dir Raten das ganze in ein Objekt zu wrappen .. sonst wird das irgendwann zu unübersichtlich.
 
Also mein Array sieht nun wie folgt aus
Code:
String[][]belegungsplan = {
            {null,"Montag","Dienstag","Mittwoch","Donnerstag","Freitag"},
            {"1.Block",null,null,null,null,null},
            {"2.Block",null,null,null,null,null},
            {"3.Block",null,null,null,null,null},
            {"4.Block",null,null,null,null,null},
            {"5.Block",null,null,null,null,null},
            {"6.Block",null,null,null,null,null}
Befindet sich aktuell in der Klasse Belegungsplan. Das ganze kommt bei Ausgabe zwar ein wenig verschoben raus aber ich brauch es ja e in Textform. Die null Werte hab ich drin weil es mir sonst bei der Methode reservierung einen Index error ausgibt.
Code:
public void reservieren (int tag, int block, String bezeichnung){
        belegungsplan [block ][tag ] = bezeichnung;

in der Main class wird die Tabelle dann "befüllt"
Code:
Belegungsplan c07 = new Belegungsplan("A123");
      
        c07.reservieren(1, 2, "Prog2");

Das würde mir am Montag in Block 2 Prog2 eintragen

Ach und das mit den Objekt ist eine gute Idee , werde das gleich mal versuchen! Danke
 
Die Wochentage und 1.Block - 6.Block würde ich aus dem Array herausnehmen .. das kannst du aus den Indizes ableiten.
Für die Wochentage könntest du ein eigenes Array nehmen und die Blöcke sind eben (dein index + 1).

Hier mal an einem kleinen Beispiel ..
Java:
final String[] weekdays = {"Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag"};
String[][] plan = {
        {null, "A", null, "B", null},
        {null, "C", null, null, "D"},
        {"B", "A", null, null, null},
};

for (int i = 0; i < plan[0].length; i++) {
    System.out.println("\n" + weekdays[i]);
    int counter = 0;
    for (int j = 0; j < plan.length; j++) {
        if (plan[j][i] != null) {
            System.out.println(String.format("%d. Block: %s", (j + 1), plan[j][i]));
            counter++;
        }
    }
    if (counter == 0) {
        System.out.println("Es finden keine Vorlesungen statt.");
    }
}

Jetzt kannst du es ja mal "ordentlich" machen und mit Objekten arbeiten 😉
 
Hab dann selber nochmal rumprobiert und war deiner Lösung näher als ich dachte, nur auf die Idee mit dem extra Array bin ich nicht gekommen.Danke nochmal! Achja hab jetzt eine Klasse Belegungsplan und erstelle dann verschiedene Räume als Objekte.
 

Zurück
Oben