我希望我的程序格式化为
但是,它的格式如下:
我有两个类,其中一个是getter one(Item),大部分代码都在这个(TestItem)
这是getter文件中的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 :(得分:1)
正如已经提议的那样,使用格式模式而不是TAB字符printf()
。然后您的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()
);
}
}
需要进行一些微调。但你应该已经了解了全局。
答案 1 :(得分:0)
在第一行
System.out.println("itemID itemName inStore price ");
您还必须使用带有表格的printf,并且没有空格来获得相同的缩进。
答案 2 :(得分:0)
在标题中添加标签:
System.out.printf("itemID\titemName\tinStore\tprice\t");
将有助于按顺序获得第一列。第二个问题是标题栏中文本的长度,它会推动您的格式化。快速修复将添加更多选项卡。但这可能不适用于短标题或更长标题。
如上所述,最好使用Formatter类