在Java中排列输出

在Java中排列输出,java,output-formatting,Java,Output Formatting,我正在编写一个21点程序,它可以保存用户信息,例如赢得的手数、玩过的手数、留给玩家的钱以及他们的姓名。输出应该是正确的,即使它们在变化。我目前的代码是: System.out.format("%s \t \t \t %s %n", "Name:", playerName); System.out.format("%s \t \t %d %n", "Hands Played:", playerHands); System.out.format("%s \t \t %d %n

我正在编写一个21点程序,它可以保存用户信息,例如赢得的手数、玩过的手数、留给玩家的钱以及他们的姓名。输出应该是正确的,即使它们在变化。我目前的代码是:

    System.out.format("%s \t \t \t %s %n", "Name:", playerName);
    System.out.format("%s \t \t %d %n", "Hands Played:", playerHands);
    System.out.format("%s \t \t %d %n", "Hands Won:", playerWins);
    System.out.format("%s \t \t \t %.2f %n", "Money:", playerMoney);
这句话在屏幕的中间是合理的,但是我已经没有其他的想法了。 附加问题:为什么第二个和第三个打印语句只需要2“\t”s?我认为这与前面字符串的长度有关,但有没有一个硬性的规则呢?

这应该有帮助:

System.out.format("%15s  %-15s %n", "Name:", playerName);
System.out.format("%15s  %-15d %n", "Hands Played:", playerHands);
System.out.format("%15s  %-15d %n", "Hands Won:", playerWins);
System.out.format("%15s  %-15.2f %n", "Money:", playerMoney);
输出:

          Name:  Player 1        
  Hands Played:  10              
     Hands Won:  2               
         Money:  15.05      
这将有助于:

System.out.format("%15s  %-15s %n", "Name:", playerName);
System.out.format("%15s  %-15d %n", "Hands Played:", playerHands);
System.out.format("%15s  %-15d %n", "Hands Won:", playerWins);
System.out.format("%15s  %-15.2f %n", "Money:", playerMoney);
输出:

          Name:  Player 1        
  Hands Played:  10              
     Hands Won:  2               
         Money:  15.05      

不可能知道控制台的宽度,因此您只能针对一个特定宽度制定解决方案。1。开始时打印的%s字符串可能会将您推过选项卡边界。2.如果您的“控制台”支持可变宽度字体(任何现代图形用户界面),那么这也会使您陷入困境。不可能知道控制台的宽度,因此您只能针对一种特定宽度制定解决方案。1。开始时打印的%s字符串可能会将您推过选项卡边界。2.如果您的“控制台”支持可变宽度字体(任何现代GUI),那么这也会让您陷入困境。这解决了我的右对齐问题,但现在又增加了一个问题,即名称、手牌、手牌赢了和钱现在都不是左对齐的,对不起,我应该更清楚。没关系,我想我明白了。如果我做了“%15-s”,这能解决我的问题吗?我试过了,它似乎起了作用。这解决了我的右对齐问题,但现在又增加了一个问题,名字、手牌、手牌赢了,钱现在不是左对齐的,对不起,我应该更清楚。没关系,我想我明白了。如果我做了“%15-s”,这能解决我的问题吗?我试过了,似乎很管用。