2015-04-14 3 views
0

Я хочу, чтобы моя программа для форматирования красиво, как thisЯ имею форматирование вопросы

Но это форматы, такие как: this, where the spacing is off

У меня есть два класса, один из них является добытчик один (пункт), и большинство кода будет в этом один (TestItem)

Это метод ToString в газопоглощающего файле

public String toString() 
    { 
     return " " + itemID + "\t" + itemName + "\t" + inStore + "\t" + "$" +  df.format(Price);//String.format("$%,1.2f", Price) +"\n" ; 
    } 

И в TestMovie, Thses в повторно важных методов:

public static void main (String [] args) 
    { 
     Item[] hardware = new Item[6]; 

     hardware[0]=new Item(1011,"Air Filters",200,10.5); 
     hardware[1]=new Item(1034,"Door Knobs",60,21.5); 
     hardware[2]=new Item(1101,"Hammers",90,9.99); 
     hardware[3]=new Item(1600,"Levels",80,19.99); 
     hardware[4]=new Item(1500,"Ceiling Fans",100,59); 
     hardware[5]=new Item(1201,"Wrench Sets",55,80); 

     System.out.println("Original Array:"); 
     System.out.println(); 
     printInventory(hardware); 
     System.out.println(); 

и этот метод проходит через массив

 public static void printInventory(Item[] hardware) //traverse and print 
    { 
     System.out.printf("itemID\titemName\tinStore\tprice\n"); 

    System.out.println("--------------------------------------------------------"); 
     for(Item print : hardware) 
     { 
      for (int i = 0; i < 1; i++) 
      { 
       //System.out.println(hardware[i]); 
       System.out.printf(print.getItemID() + "\t" + print.getItemName() + "\t" + print.getInStore() + "\t$" + print.getPrice()); //format 
      } 
      System.out.println(); 
     } 
     } 

Программа работает без ошибок, он просто не отформатирован так, как я хотел бы. Мне нужна реализация функции printf в моей программе. Меня больше беспокоят предметы, чем заголовок.

+0

Не форматировать с помощью вкладок. Используйте 'System.out.printf()' и задайте ширину поля для разных элементов. См. [Документация «Formatter'] (http://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html), который является классом, внутренне используемым [методом' printf() '] (http://docs.oracle.com/javase/7/docs/api/java/io/PrintWriter.html#printf%28java.lang.String,%20java.lang.Object...%29) – RealSkeptic

ответ

1

Как уже было предложено использовать printf() с шаблоном формата вместо символов TAB. Тогда ваш printInventory() может выглядеть так:

public static void printInventory(Item[] hardware) { 
    System.out.printf("%-10s %-20s %-10s %-10s%n", 
      "itemID", 
      "itemName", 
      "inStore", 
      "price" 
    ); 

    System.out.println("--------------------------------------------------------"); 

    for (Item print : hardware) { 
     System.out.printf("%-10s %-20s %-10s $%,.2f%n", 
       print.getItemID(), 
       print.getItemName(), 
       print.getInStore(), 
       print.getPrice() 
     ); 
    } 
} 

Требуется точная настройка. Но вы уже должны получить общую картину.

+0

Благодарим за помощь! –

0

В Вашей первой линии

System.out.println("itemID  itemName  inStore  price  "); 

Вы должны также использовать Printf с табулирования и без пробела, чтобы получить такой же отступ.

+0

Я не уверен, что делать, вы можете помочь мне с первой частью. Я знаю, что он должен выглядеть примерно так: d% –

+0

Да, лучший вариант - использовать 'String.format (...) '(doc: http://docs.oracle.com/javase/7/docs/api/java /lang/String.html#format(java.lang.String,%20java.lang.Object ...). Но в вашем примере, когда вы решили использовать System.out.printf, вам нужно изменить свой первый System.out .println с printf с помощью \ t для разделения ваших значений заголовков –

0

Добавление вкладки в ваш заголовок:

System.out.printf("itemID\titemName\tinStore\tprice\t"); 

Поможет получить первый столбец в порядке. Вторая проблема заключается в длине текста в столбце заголовка, который выталкивает ваше форматирование. Быстрое исправление будет заключаться в добавлении дополнительных вкладок. Но это может не работать с короткими или более длинными заголовками.

Как уже упоминалось это лучше использовать Formatter класс

Смежные вопросы