Probleme beim printen von Arrays durch for Schleife

nikva

Bekanntes Mitglied
Hallo,
Ich sitze an einer Programmierung die zufällig Wm Gruppen auslosen und die dann in der console ausgeben soll.
Jetzt habe ich jedoch das problem dass nur die ersten 3 Teams in der Gruppe stehen und der rest dann einfach rechts daneben ausgegeben wird.

nrxV6Sn.png

Java:
package edu.hm.cs.swe2.urn.usage;

import edu.hm.cs.swe2.urn.base.Urn;
import edu.hm.cs.swe2.urn.exceptions.NoContentLeftException;

public class Tournament {

    private String title;
    private String[][] groups;

    public Tournament(int numberOfGroups, int numberOfTeamsPerGroup, Urn<String> urn) throws NoContentLeftException {
        this.title = urn.getTitle();
        this.groups = new String[numberOfGroups][numberOfTeamsPerGroup];

        for (int k = 0; k < groups[0].length; k++) {
            for (int i = 0; i < groups.length; i++) {
                String teamName = urn.drawFrom();
                groups[i][k] = teamName;
            }

        }
    }

    public void printGroupStructure() {
        System.out.println("Auslosung der Begegnungen, Fussball-Weltmeisterschaft 2010\n");
        for (int i = 0; i < groups.length; i++) {
            char x = (char) (65 + i);
            String s = String.valueOf(x);
            System.out.format("%-16s", s);
        }

        for (int k = 0; k < groups[0].length; k++) {
            for (int i = 0; i < groups.length; i++) {
                System.out.format("%-16s", groups[i][k]);
            }
            System.out.println();
        }

    }
}

Hoffe jemand hat ne Idee wo der Fehler liegt

edit: Das Problem ist das selbe egal wie groß die Gruppen sind. Die letzte "Reihe" wird immer abgeschnitten
 
Zuletzt bearbeitet:
Ohne Zugriff auf die verwendeten Imports dürfte das ein Ratespiel werden. Aber vielleicht steckt der Fehler in den Anweisungen
groups[0].length; sowie groups.length;. Hier mal via Debugger / Konsolenausgabe /... überprüfen, ob die Werte passen.
 
Java:
package edu.hm.cs.swe2.urn.base;

import java.util.ArrayList;

import edu.hm.cs.swe2.urn.Helper;
import edu.hm.cs.swe2.urn.exceptions.NoContentLeftException;

public class Urn<T> {

    private String title;
    private ArrayList<T> items = new ArrayList<T>();

    public Urn(String title, T[] elements) {
        this.title = title;
        for (int i = 0; i < elements.length; i++) {
            items.add(elements[i]);
        }
    }

    public String getTitle() {
        return this.title;
    }

    public T drawFrom() throws NoContentLeftException {
        T item = null;

        if (items.isEmpty()) {
            throw new NoContentLeftException();
        } else {
            int r = Helper.random(items.size());
            item = items.get(r);
            items.remove(r);
        }
        return item;
    }

}
Aber vielleicht steckt der Fehler in den Anweisungen
groups[0].length; sowie groups.length;
Nachdem er die erste Reihe schreibt macht er weiter obwohl er nach groups.length(8) aufhören sollte. Interessanterweise macht er genau doppelt so viele Schritte aber auch nur im ersten Durchgang 🙄
 
Zuletzt bearbeitet:
Ok, hab das Problem gelöst:
Ich hab nach der ersten for-schleife für den Gruppentitel ein system.out.println() gesetzt damit er da in die nächste zeile springt.
Jetzt klappt es
 

Zurück
Oben