我正在尝试使用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";
答案 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
已正确设置