在Java中保持适当的间距

时间:2013-10-25 15:42:23

标签: java formatting string-formatting

我做了一个程序,应该在行的末尾输出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);
}

当一行中有4个字符串而另一行只有2个字符串时,int和括号不会相互对齐(4个字符串之后的字符串会被标记过多)

2 个答案:

答案 0 :(得分: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]

这就是你想要的吗?

答案 1 :(得分: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'是否为正。