1

次のコードは正しい出力を提供しますが、私が必要としているのとまったく同じ形式ではありません。

現在のコード:

public static void main(String[] args)
{
    Scanner scan = new Scanner(System.in);
    Deck deck = new Deck();
    Card C;

    System.out.println(deck.getTotalCards());
    System.out.print("Number of players: ");
    int players = scan.nextInt();
    System.out.print("Number of cards: ");
    int cards = scan.nextInt();

    for(int k=0; k<players; ++k)
    {
        for(int i =0; i<cards; i++)
        {
            C = deck.drawFromDeck();
            System.out.println("Player "+(k+1) + ": " + C.toString());
        }
    }
    scan.close();
}

これにより、次の出力が提供されます。

51 // number of cards in deck

Number of players: 3 //3 - entered by user
Number of cards: 2 // 2- entered by user
Player 1: 4 of Spades
Player 1: Jack of Diamonds
Player 2: 6 of Clubs
Player 2: 2 of Hearts
Player 3: Jack of Clubs
Player 3: 8 of Diamonds

必要な出力:

51
Number of players: 3 //3 - entered by user
Number of cards: 2 // 2- entered by user
Player 1: 4 of Spades, Jack of Diamonds
Player 2: 6 of Clubs, 2 of Hearts
Player 3: Jack of Clubs, 8 of Diamonds

希望する出力を反映するようにforループを変更するにはどうすればよいですか。

4

3 に答える 3

2

新しい行を自動的に印刷したくない場合は、System.out.println()の代わりにSystem.out.print()を使用する必要があります。私はこのような何かがそれをするだろうと思います:

for(int k=0; k<players; ++k)
{
    System.out.print("Player "+(k+1) + ": ");
    for(int i =0; i<cards; i++)
    {
        C = deck.drawFromDeck();
        System.out.print(C.toString());
        if(cards >= 2 && i != cards - 2) {
            System.out.print(", ");
        }
    }
    System.out.print("\n");
}
于 2013-03-10T23:44:59.083 に答える
1

内側のループ内で、のSystem.out.print()代わりにを使用しSystem.out.println()ます。外側のループの終わりで、を呼び出しSystem.out.println()て次の行の次の出力を開始します。

例えば:

for (int k = 0; k < players; k++) {
  for (int i = 0; i < cards; i++) {
    if (i == 0) {
      System.out.print("Player "+(k+1) + ": ");
    }
    else {
      System.out.print(",");
    }
    C = deck.drawFromDeck();
    System.out.print(C.toString());
  }
  System.out.println();
}
于 2013-03-10T23:46:03.823 に答える
1

あなたがする必要があるのは、各プレーヤーの出力を文字列に保存し、それを内側のループの外側に出力することです。だから次のようなもの:

for(int k=0; k<players; ++k)
    {
        String output = " ";
        for(int i =0; i<cards; i++)
        {
            C = deck.drawFromDeck();
            output+= C.toString() + ",";
        }
        System.out.print("Player " + (k+1) + ": ");
        System.out.println(output);
    }
于 2013-03-10T23:49:31.613 に答える