如何将NumberFormat对象传递给方法?

时间:2017-03-09 01:15:57

标签: java object parameters arguments number-formatting

我正在尝试使用NumberFormat对象来显示价格。我对编程很新,我的书不是很有帮助,我的老师也不是。我有一个名为Product的类和一个名为MyProduct的类,它是Product的子类。在Product类中,有一个名为getPrice()的方法,它没有参数。它只是返回价格的价值。我的任务是在MyProduct中创建一个名为getPrice(NumberFormat nf)的方法,该方法返回价格,但格式为货币。在main方法中,如果我使用myproduct.getPrice();我得到了价格,但没有格式化(我知道这是因为它从Product调用getPrice(),而不是从MyProduct调用getPrice(NumberFormat nf)。我的问题是我将什么作为参数来停止获取编译时错误?我我已经尝试了getPrice(nf),getPrice(this),getPrice(价格),几乎我能想到的任何东西都没有用。任何帮助都会非常感激,所有相关的代码行都在下面发布。提前致谢。< / p>

以下是MyProduct类

public class MyProduct extends Product{
public MyProduct()
{
 super();
}

NumberFormat nf;

public String getPrice(NumberFormat nf) {

    this.nf = NumberFormat.getCurrencyInstance();
    String priceFormatted = nf.format(price);
    return priceFormatted;
}

这是ProductApp类

public class ProductApp {

public static void main(String args[]) {
    // display a welcome message
    System.out.println("Welcome to the Product Viewer");
    System.out.println();

    // create 1 or more line items
    Scanner sc = new Scanner(System.in);
    String choice = "y";
    while (choice.equalsIgnoreCase("y")) {
        // get input from user
        System.out.print("Enter product code: ");
        String productCode = sc.nextLine();

        // Use a ProductReader object to get the Product object
        ProductDB db = new ProductDB();            

             MyProduct myproduct = db.getProduct(productCode);

        // display the output
        String message = "\nPRODUCT\n" +
            "Code:        " + myproduct.getCode() + "\n" +
            "Description: " + myproduct.getDescription() + "\n" +
            "Price:       " + myproduct.getPrice()+ "\n";
        System.out.println(message);

        // see if the user wants to continue
        System.out.print("Continue? (y/n): ");
        choice = sc.nextLine();
        System.out.println();
    }
    System.out.println("Bye!");

我需要帮助的一行是

"Price:       " + myproduct.getPrice()+ "\n";

1 个答案:

答案 0 :(得分:0)

当您在nf方法中实例化getPrice时,我不会费心去传递它。也许将方法名称更改为getPriceAsString定义为

public String getPriceAsString() {

    NumberFormat nf = NumberFormat.getCurrencyInstance();  // keep local
    String priceFormatted = nf.format(price);
    return priceFormatted;
}

然后您可以将其称为myProduct.getPriceAsString ()

修改

根据你的评论

主要做

"Price:       " + myproduct.getPrice(NumberFormat.getCurrencyInstance())+ "\n";

并将方法声明为

public String getPrice(NumberFormat nf) {
    return nf.format(price);
}

我认为price已正确设置