如何使用System.out.format()在Java中的一行显示多个项目?

时间:2013-04-05 17:24:34

标签: java

import java.text.*;
public class program17
{
public static void main(String[] args)
{
    NumberFormat money=NumberFormat.getCurrencyInstance();
    int[] num={2013,2015,2017,2019,2021};
    double[] price={19.85,15.39,16.59,12.35,15.15};
    int[] qty={43,12,34,17,10};
    double[] value={0,0,0,0,0};
    System.out.println("Part  \tItem \tItem    \tTotal");
    System.out.println("Number\tPrice\tQuantity\tValue\n");
    for(int i=0;i<5;i++)
    {
        value[i]=val(price[i],qty[i]);
        //System.out.println(num[i]+"\t"+money.format(price[i])+"\t"+qty[i]+"\t"+money.format(value[i]));
        System.out.format("%4d\t $%5d.2f\t %2d\t %6.2f", num[i], price[i], qty[i], value[i]);
    }
}
public static double val(double p, int q)
{
    double x=p*q;
    return x;
}
}

这是我的100%代码。 这是我的解决方案的输出: Captured Output http://maradastudios.ucoz.com/school/Capture2.png

您可以告诉我,我可以使用System.out.println()语句显示此程序的“数据行”,但是,我已经需要System.out.format()这种特殊情况,所以我决定最好真正了解这个错误的含义。 我认为这可能是因为我试图显示的变量价格[i]是一个双精度数,而不是像num [i]那样的int。我得出了这个结论,因为起初我用

运行它
System.out.format("%4d\t", num[i);

之后工作正常,我用

运行
System.out.format("%4d\t $%5d.2f\t", num[i], price[i);

之后又出错了。这是我试图运行的完整代码。谁能告诉我我的System.out.format()语句出了什么问题,并在我更正时协助我?

1 个答案:

答案 0 :(得分:1)

格式字符串中有一个迷路d。删除它,你会很高兴。

System.out.format("%4d\t $%5d.2f\t %2d\t %6.2f", num[i], price[i], qty[i], value[i]);
                            ^