0

行末に文字列の 2 つのリスト (2 から 5 の間の任意の場所) を出力するプログラムを作成しました。括弧内に int を出力したいと考えています。

int と大かっこを右揃えするのに問題があります。

すべての printf 書式設定は、int とその周囲の括弧の移動には役立ちません!

while (dealerPoints < 17 && playerBust == false) {
    System.out.printf("\nDealer has less than 17. He hits...\n");       
    int nextDealerCard = dealCard();
    dealerPoints += cardValue(nextDealerCard);
    dealerHand += faceCard(nextDealerCard);                             
    System.out.printf("Dealer: %s\t[%d]\n", dealerHand, dealerPoints);              
    System.out.printf("Player: %s\t[%d]\n", playerHand,  playerPoints);
}

1 つの行に 4 つの文字列があり、もう 1 つの行に 2 つしかない場合、int と角かっこが互いに一致しません (4 つの文字列の後の 1 つが、あまりにも遠くにタブが配置されます)。

4

2 に答える 2

0
System.out.printf("Dealer: %s\t[%10d]\n", "lala", 22222);
System.out.printf("Player: %s\t[%10d]\n", "hoho", 33);

出力:

Dealer: lala    [     22222]
Player: hoho    [        33]

これは、あなたの望むことですか?

于 2013-10-25T15:50:48.323 に答える
0

右揃えにする場合は、出力を CSV としてファイルに書き込み、Excel のようなプログラムで開くか、入力文字列を一定の長さにするユーティリティ クラスを作成します。

public static String fixedCharCount( String input, int length ) {
    int spacesToAdd = length - input.lengh();
    StringBuffer buff = new StringBuffer(input);
    for( int i=0; i<spacesToAdd; i++) {
        buff.append(" ");
    }
    return buff.toString();
}

表示前にすべてのデータをループして、テーブル内で最も長い文字列を確認し、それに合わせて長さを調整することもできます (コードは完全ではありません。「spacesToAdd」が正であることを確認する必要があります。

于 2013-10-25T16:03:15.830 に答える