2016-02-22 7 views
1

Я пишу программу для блэкджека, которая сохраняет информацию о пользователе, такую ​​как выигранные руки, руки и деньги, оставшиеся для игрока, и их имя. Выходы должны быть правильными, даже если они меняются. Мой текущий код:Выстраивание выходов в Java

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-го и 3-го порядка печати требуется только 2 "\ t" s? Я предполагаю, что это имеет какое-то отношение к длине строк перед ними, но есть ли для этого жесткое правило?

+0

Это не возможно знать ширину консоли, так что вы будете ограничивающими сделать решение для одной определенной ширины. – Vulcan

+0

1. Строка% s, которую вы печатаете в начале, может привести к тому, что вы пройдете границу табуляции. 2. Если ваша «консоль» поддерживает шрифт с переменной шириной (любой современный графический интерфейс), это также повредит вам. – markspace

ответ

4

Это должно помочь:

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  
+0

Это решило мою проблему для правильного оправдания, но теперь добавляет проблему, что имя, руки, выигранные руки и деньги теперь не оправданы, извините, я должен был быть более ясным. – slomal

+0

Ничего, я думаю, что понял. Если я делаю «% 15-s», это должно решить мою проблему? Я попробовал, и это работает. – slomal

+0

Да, '-' делает выравнивание по левому краю. Отлично сработано. –