Использование String.форматирование для выравнивания операторов toString() и размещения в них запятых

Итак, у меня есть программа, состоящая из четырех классов. Суперкласс лодок, подклассы парусных и моторных лодок, а также тестовая программа, где у меня есть список различных парусных и моторных лодок.

I have a toString () method that looks like this in the SailBoat class, The PowerBoat has the same one excpet it replaces number of sails with engine size.

public String toString()
   {
      return super.toString() + " Number of Sails = " + numSails + " Price = " + calcPrice();
   }

В моем тестовом классе я должен распечатать список лодок, которые у меня есть. В настоящее время я делаю это, как это:

for(Boat b: boats)
  {
     System.out.printf(b.toString());
     System.out.printf("n");
  }

Это возвращает мой список лодок, но он не выровнен вообще и выглядит так:

Color = blue Length = 22 Engine Size = 60 Price = 12800.0
Color = white Length = 20 Number Sails = 1 Price = 22000.0
Color = red Length = 42 Number Sails = 3 Price = 48000.0
Color = yellow Length = 35 Engine Size = 80 Price = 17100.0
Color = red Length = 50 Engine Size = 120 Price = 22400.0
Color = blue Length = 33 Number Sails = 2 Price = 37000.0
Color = white Length = 20 Engine Size = 10 Price = 11200.0

I would like it to look like (the * are suggested to represent padding or space holders).):

Color = blue   Length = 22  Engine Size = *60  Price = $ 12,800.00
Color = white  Length = 20  Number Sails = *1  Price = $ 22,000.00
Color = red    Length = 42  Number Sails = *3  Price = $ 48,000.00
Color = yellow Length = 35  Engine Size = *80  Price = $ 17,100.00
Color = red    Length = 50  Engine Size = 120  Price = $ 22,400.00
Color = blue   Length = 33  Number Sails = *2  Price = $ 37,000.00
Color = white  Length = 20  Engine Size = *10  Price = $ 11,200.00

Я знаю, что я должен использовать строку.format () в методах to String, но все примеры, которые я вижу на сайте Oracle и в других местах, не имеют никакого смысла для меня и не показывают, чтобы применить их к методам toString. Некоторая помощь была бы очень признательна…

1 ответ

  1. String color1 = "yellow";
    int length1 = 33;
    String color2 = "red";
    int length2 = 333;
    System.out.println(String.format("Color = %-10s Length = %5d", color1, length1));
    System.out.println(String.format("Color = %-10s Length = %5d", color2, length2));
    

    Выше приведен минимальный пример, который вы можете попробовать. Все, что вам нужно, — это заполнители фиксированной длины (которые вы можете указать). И наличие или отсутствие знака минус диктует, что текст выровнен влево или вправо.