Arrays auf Konsole formatiert ausgeben

Hallo, ich habe hier eine Übung aus einem Buch, wo ich ein Kartenspiel ausgebe.
Im Buch wird von der Methode dealCard() der Klasse DeckOfCards immer nur eine Karte ausgegeben.
Mit einer for-Schleife werde dann immer 4 Karten in einer Reihe ausgegeben.

Java:
System.out.printf("%-20s%-20s%-20s%-20s\n", myDeckOfCards.dealCard()... 4x ....)

Ich hab mir jetzt eben gedacht, warum nicht das ganz Array übergeben und dann das ganze grafisch ausgeben. (dazu verwende ich die Methode dealCards())
Zweiteilige Frage: Macht das Sinn das so zu machen und wenn ja, wie geb ich dann 4 Karten
in einer Reihe in der Konsole aus?
Mein Code ist nun der folgende:
Java:
public class DeckOfCards {
....
public Card[] dealCards() {
       
        return deck;
    }
...
}
Java:
public class DeckOfCardsTest {

   
    public static void main(String[] args) {
       
        DeckOfCards myDeckOfCards = new DeckOfCards();
        myDeckOfCards.shuffle();
        Card[] cards = myDeckOfCards.dealCards();
       
        //print all 53 cards in the order in which they are delt
       
        for(Card card : cards )
           
        System.out.printf("%-20s%-20s%-20s%-20s\n",card,card,card,card);
       
    }

}
In meinem Beispiel gibt es 4 mal die gleiche Karte aus, was ja falsch ist!
Merci, m.c.
 
Nimm einfach eine for-Schleife, gib jede Karte einzeln aus und mach aller 4 Karten einen Zeilenumbruch anstatt nach jeder Karte.
 
O.k. sowas:
Java:
        for(int i = 0; i < 52; i++) {
           
            String space = ", ";
            String lf = "\n";
           
            System.out.print(cards[i]+space);
           
            if((i+1)%4 == 0) {
               
                System.out.println(lf);
            }
     }

Ich frag mich halt, warum die das im Buch so machen, also gar nicht das gesamte Array zu übergeben sondern
immer nur einzelne Karten..
 
Also so wie ich das immer mache brauchst du in deinem out.println keinen umbruch mehr machen, weil println schon einen umbruch macht. Ändert jetz nicht sehr viel am code aber somit würdest du nicht zwei umbrüche haben 😀. + Unser prof hat uns ma gesagt das ein String von der erstellung zeitaufwendig ist und deswegen haben wir konstate ausgaben İmmer in die dafür vorgesehene sys out befehle mit eingegeben.
 
Was meinst du damit? Sowas? System.out.println(array) ;
Nein, ich mein vom Aufbau vom Programm her.
Die Methode dealCard() von DeckOfCards erzeugt immer die Ausgabe von einer Karte.
Im main-Programm wird dann die Ausgabe über die Schleife gemacht.
Eventuell macht dass dann eben wieder eine Methode einer anderen Klasse.
Ich hab nur gedacht, dass die sich im Buch etwas gedacht haben.
Stichwort: MVC
 

Neue Themen


Zurück
Oben