Java 在toString中格式化我的货币输出

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

我的代码运行良好,只是格式错误。例如,它正在输出: 当我需要输出0.25美元的红烧时,它是0.25美元。唯一输出错误的是小数点前面的0。其余的都是正确的。我怎样才能解决这个问题?这是我的密码:

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
,不带当前符号,小数点后两位数不是我想要的,这是我的作业要求的。我需要它在小数点前输出除零以外的数字,但如果它是零,则需要不显示。