Java 在toString中格式化我的货币输出
我的代码运行良好,只是格式错误。例如,它正在输出: 当我需要输出0.25美元的红烧时,它是0.25美元。唯一输出错误的是小数点前面的0。其余的都是正确的。我怎样才能解决这个问题?这是我的密码:Java 在toString中格式化我的货币输出,java,formatting,tostring,Java,Formatting,Tostring,我的代码运行良好,只是格式错误。例如,它正在输出: 当我需要输出0.25美元的红烧时,它是0.25美元。唯一输出错误的是小数点前面的0。其余的都是正确的。我怎样才能解决这个问题?这是我的密码: import java.text.NumberFormat; public class MenuItem { private String name; private double price; public MenuItem (String name, double price) { th
import java.text.NumberFormat;
public class MenuItem
{
private String name;
private double price;
public MenuItem (String name, double price)
{
this.name = name;
this.price = price;
}
public String getName()
{
return name;
}
public double getPrice()
{
return price;
}
public String toString()
{
return (getName() + " " + NumberFormat.getCurrencyInstance().format(getPrice()));
}
}
测试代码为:
import java.util.Scanner;
import java.util.Vector;
public class sol
{
public static void main(String[] args)
{
/* Read from keyboard */
Scanner keys = new Scanner(System.in);
/* Create dynamic list */
Vector<MenuItem> list = new Vector<MenuItem>();
/* While there is input waiting */
while (keys.hasNext())
{
/* Prompt the user */
System.out.println("Enter product name and price");
/* Test the constructor */
list.add(new MenuItem(keys.next(), keys.nextDouble()));
}
/* Test toString (implicitly called when passed to println) */
System.out.println("Testing toString");
for (MenuItem mi : list)
System.out.println(mi);
/* Test getters */
System.out.println("Testing getters");
for (MenuItem mi : list)
System.out.println("Item: " + mi.getName() + " Price: " + mi.getPrice());
/* Close keyboard stream */
keys.close();
}
}
import java.util.Scanner;
导入java.util.Vector;
公共类sol
{
公共静态void main(字符串[]args)
{
/*从键盘读取*/
扫描仪键=新扫描仪(System.in);
/*创建动态列表*/
向量列表=新向量();
/*当有输入等待时*/
while(keys.hasNext())
{
/*提示用户*/
System.out.println(“输入产品名称和价格”);
/*测试构造函数*/
添加(新菜单项(keys.next(),keys.nextDouble());
}
/*Test toString(传递到println时隐式调用)*/
System.out.println(“测试toString”);
用于(菜单项mi:列表)
系统输出打印项次(mi);
/*测试吸气剂*/
System.out.println(“测试吸气剂”);
用于(菜单项mi:列表)
System.out.println(“项:+mi.getName()+”价格:+mi.getPrice());
/*关闭键盘流*/
keys.close();
}
}
谢谢你创建一个十进制数字的结构,让它们以你想要的方式出现
DecimalFormat twoDForm = new DecimalFormat("#.00");
Double d = Double.parseDouble("0.25");
String s = twoDForm.format(d);
System.out.println(s);
格式中的#表示:
数字,零表示不存在
它将输出.25
,但如果前导数字不为零,则仍会显示前导数字创建一个十进制数字的结构,以显示它们的显示方式
DecimalFormat twoDForm = new DecimalFormat("#.00");
Double d = Double.parseDouble("0.25");
String s = twoDForm.format(d);
System.out.println(s);
格式中的#表示:
数字,零表示不存在
它将输出.25
,但如果前导数字不为零,则仍会显示前导数字创建一个十进制数字的结构,以显示它们的显示方式
DecimalFormat twoDForm = new DecimalFormat("#.00");
Double d = Double.parseDouble("0.25");
String s = twoDForm.format(d);
System.out.println(s);
格式中的#表示:
数字,零表示不存在
它将输出.25
,但如果前导数字不为零,则仍会显示前导数字创建一个十进制数字的结构,以显示它们的显示方式
DecimalFormat twoDForm = new DecimalFormat("#.00");
Double d = Double.parseDouble("0.25");
String s = twoDForm.format(d);
System.out.println(s);
格式中的#表示:
数字,零表示不存在
它将输出
.25
,但如果它不是零,则仍会显示一个前导数字当它在视觉上和数字上都正确时,为什么不希望0在小数之前?考虑使用DecimalFormat
new DecimalFormat(“#.00”)。format(number)
将返回.25
,不带当前符号,小数点后两位数不是我想要的,这是我的作业要求的。我需要它在小数点前输出除零以外的数字,但是如果它是零,它就不需要显示。当它在视觉上和数字上都正确时,为什么不希望0在小数点之前呢?考虑使用DecimalFormat
new DecimalFormat(“#.00”)。format(number)
将返回.25
,不带当前符号,小数点后两位数不是我想要的,这是我的作业要求的。我需要它在小数点前输出除零以外的数字,但是如果它是零,它就不需要显示。当它在视觉上和数字上都正确时,为什么不希望0在小数点之前呢?考虑使用DecimalFormat
new DecimalFormat(“#.00”)。format(number)
将返回.25
,不带当前符号,小数点后两位数不是我想要的,这是我的作业要求的。我需要它在小数点前输出除零以外的数字,但是如果它是零,它就不需要显示。当它在视觉上和数字上都正确时,为什么不希望0在小数点之前呢?考虑使用DecimalFormat
new DecimalFormat(“#.00”)。format(number)
将返回.25
,不带当前符号,小数点后两位数不是我想要的,这是我的作业要求的。我需要它在小数点前输出除零以外的数字,但如果它是零,则需要不显示。