在Java中,有没有方法格式化double/int或非字符串变量的输出?
我意识到这听起来很简单,可能是。。。 在main()中的代码中这样说,main()位于循环中:在Java中,有没有方法格式化double/int或非字符串变量的输出?,java,formatting,Java,Formatting,我意识到这听起来很简单,可能是。。。 在main()中的代码中这样说,main()位于循环中: System.out.println(num[i]+"\t "+qty[i]+"\t "+money.format(price[i])+"\t"+money.format(value[i])+"\t"+reorder[i]); 这里捕获的总数为: 正如您可能已经注意到的,它工作得很好。然而,在输出过程中#114行(从第二行到最后一行)的总价值为90.00美元。这是正确的,但会导致R
System.out.println(num[i]+"\t "+qty[i]+"\t "+money.format(price[i])+"\t"+money.format(value[i])+"\t"+reorder[i]);
这里捕获的总数为:
正如您可能已经注意到的,它工作得很好。然而,在输出过程中#114行(从第二行到最后一行)的总价值为90.00美元。这是正确的,但会导致Reorder Point变量的间距为奇数。简单地说,我是否可以格式化此变量,使其占用与其较大的数字副本相同的空间量
String.format("%10.2f", yourFloat)
// or
System.out.format("%10.2f", yourFloat)
将打印一个10字符宽(包括十进制)的字符串,小数点后有两个数字字符
()
所以
将对齐$
和
字符(除非值[i]>999.99
)
而不是:
System.out.println(
num[i] +"\t "+
qty[i] +"\t "+
money.format(price[i])+"\t"+
money.format(value[i])+"\t"+
reorder[i]);
(这正是您所拥有的,只是为了清晰起见进行了格式化并删除了滚动条)
我可能会写:
System.out.format("%5d\t %5d\t $%5.2f\t $%6.2f\t %5d %n",
num[i], qty[i], price[i], value[i], reorder[i]);
这假设price
和value
数组是浮点或双精度数组。由于money
不是一个标准类,因此很难说它除了添加一个$
符号之外还能做什么
字符串格式语法在文档中定义,但对于浮动,它大致是:
%X.Yf
其中,X
是总字段宽度,Y
是小数点的数量
比如说
"123.40" Has a total width of 6:
3 + 1 [decimal point] + 2 = 6)
" 2.34" Also has a total width of 6:
2 [spaces] + 1 + 1 [decimal point] + 2 = 6
差不多
String.format("%10.2f", yourFloat)
// or
System.out.format("%10.2f", yourFloat)
将打印一个10字符宽(包括十进制)的字符串,小数点后有两个数字字符
()
所以
将对齐$
和
字符(除非值[i]>999.99
)
而不是:
System.out.println(
num[i] +"\t "+
qty[i] +"\t "+
money.format(price[i])+"\t"+
money.format(value[i])+"\t"+
reorder[i]);
(这正是您所拥有的,只是为了清晰起见进行了格式化并删除了滚动条)
我可能会写:
System.out.format("%5d\t %5d\t $%5.2f\t $%6.2f\t %5d %n",
num[i], qty[i], price[i], value[i], reorder[i]);
这假设price
和value
数组是浮点或双精度数组。由于money
不是一个标准类,因此很难说它除了添加一个$
符号之外还能做什么
字符串格式语法在文档中定义,但对于浮动,它大致是:
%X.Yf
其中,X
是总字段宽度,Y
是小数点的数量
比如说
"123.40" Has a total width of 6:
3 + 1 [decimal point] + 2 = 6)
" 2.34" Also has a total width of 6:
2 [spaces] + 1 + 1 [decimal point] + 2 = 6
Formatter Formatter=new Formatter();
System.out.println(格式化程序.format(“%20s%20s%20s%20s%20s%20s”、“Title*”、“Title*”、“Title*”、“Title*”、“Title*”));
对于(int i=0;i<10;i++){
格式化程序=新格式化程序();
System.out.println(格式化程序格式(“%20s%20s%20s%20s%20s%20s”),数量[i],数量[i],货币格式(价格[i]),货币格式(价值[i]),再订购[i]);
}
格式化程序格式化程序=新格式化程序();
System.out.println(格式化程序.format(“%20s%20s%20s%20s%20s%20s”、“Title*”、“Title*”、“Title*”、“Title*”、“Title*”));
对于(int i=0;i<10;i++){
格式化程序=新格式化程序();
System.out.println(格式化程序格式(“%20s%20s%20s%20s%20s%20s”),数量[i],数量[i],货币格式(价格[i]),货币格式(价值[i]),再订购[i]);
}
我并不想让人觉得我在Java方面没有受过教育,但我才刚刚开始,但请您解释一下“%10.2f”的意义/目的好吗?另外,由于我在System.out.println()表单中显示它们,我是否需要像这样使用它。。。System.out.println(String.format(“%10.2f”,值[i])。。。还是像这样?System.out.format(“%10.2f”,值[i]+“\t”+其他变量服务器);很抱歉再次打扰您,但我刚刚尝试了该方法,如果不使用多个语句,我无法在一行中获取多个变量。我希望做一些类似的事情:System.out.format($%3.2f),price[I]+“\t”+num[I]);但我只能让它这样工作:System.out.format($%3.2f),price[I]);System.out.println(“\t”+num[i]);有没有办法在一行/语句中这样做?是的,只是在中添加了类似的内容System.out.format
将接受您给定的尽可能多的参数,只要您正确地传递它们。如果您尝试执行此操作,则不必查看代码背后的逻辑System.out.format($%3.2f),price[i]+“\t”+num[i])代码>然后您应该这样做:System.out.format($%3.2f\t“+num[i],price[i])所以基本上,我所做的是。。。System.out.format(“%1.1f\t%1.1f\t%1.1f\t”var1、var2、var3);如果我想将这3个变量格式化为这些参数?此外,由于您将“money”称为一个类,所以在我的程序中,它是在“NumberFormat money=NumberFormat.getCurrencyInstance();”之后使用的,所以它只是将double格式化为currency。我不是说用Java听上去没有受过教育,但我只是刚刚开始,但您能解释一下“%10.2f”的意义/用途吗?另外,由于我在System.out.println()表单中显示它们,我是否需要像这样使用它。。。System.out.println(String.format(“%10.2f”,值[i])。。。还是像这样?System.out.format(“%10.2f”,值[i]+“\t”+其他变量服务器);很抱歉再次打扰您,但我刚刚尝试了该方法,如果不使用多个语句,我无法在一行中获取多个变量。我希望做一些类似的事情:System.out.format($%3.2f),price[I]+“\t”+num[I]);但我只能让它这样工作:System.out.format($%3.2f),price[I]);System.out.println(“\t”+num[i]);有没有办法在一行/语句中这样做?是的,只是在中添加了类似的内容System.out.format
将接受您给定的尽可能多的参数,只要您正确地传递它们。如果您尝试执行此操作,则不必查看代码背后的逻辑System.out.format($%3.2f),price[i]+“\t”+num[i])代码>然后您应该这样做:System.out.format($%3.2f\t“+num[i],price[i])所以基本上,我所做的是。。。System.out.format(“%1.1f\t%1.1f\t%1.1f\t”var1、var2、var3);如果我想将这3个变量格式化为这些参数?阿迪