【发布时间】:2013-10-09 15:35:51
【问题描述】:
我正在上java课,我必须做一个作业,内容如下:
创建一个名为 Purchase 的类。每个采购都包含一个发票编号、销售金额和销售税金额。 包括发票编号和销售额的设置方法。 在销售金额的 set() 方法中, 将销售税计算为销售额的 7.5%(使用采购类中的静态文件)。 还包括一种显示方法,可在格式良好的输出显示中显示购买的详细信息。 将文件另存为 Purchase.java。编译并运行您的程序,直到它可以工作并且输出看起来不错。 按照课程文档中的说明添加必要的文档,然后将您的 .java 文件附加到此作业中
我的解决方案如下:
import java.util.*;
public class Purchase {
//Properties of Purchase class - static
private static int invoiceNumber;
private static double salesAmount;
private static double salesTax;
//setter for invoiceNumber
public static void setInvoiceNum(int invNo){
invoiceNumber = invNo;
}
//setter for salesAmount
public static void setSalesAmount(double salesAmnt){
salesAmount = salesAmnt;
salesTax = 0.075*salesAmnt;
}
//public static method to display purchase info
public static void displaySalesInfo(){
System.out.println("Invoice Number: " + Purchase.invoiceNumber);
System.out.println("Sales Amount: " + Purchase.salesAmount);
System.out.println("Sales Tax: " + Purchase.salesTax);
}
//main method that makes use of the static properties and display method
public static void main (String[] args) {
//ask user to input purchase details
Scanner scan = new Scanner(System.in);
System.out.println("Enter your invoice Number:" );
int inv = scan.nextInt();
System.out.println("Enter your Sales Amount:");
double sales = scan.nextDouble();
// send the user submitted purchase details to the setter methods and call display method
setInvoiceNum(inv);
setSalesAmount(sales);
displaySalesInfo();
}
}
这是我老师的 cmets: “对于这项任务,您将使用采购类中的静态字段提供 7.5% 的销售税。在您提交的代码中,您使用了数字文字,大多数人会认为这是一种非常糟糕的编程习惯。您确实设置了静态变量salesTax,但是你给它的值是基于实例方法参数,这是一个逻辑错误。只有税率是静态的,所有其他字段都不应该是,否则无论购买什么,每次购买都是一样的.提交的赋值代码说明你不懂静态字段的概念。”
我就是不明白?? 他说我不了解静态领域.. 我有那么无知吗?这简直令人尴尬..请说明一下。
【问题讨论】:
-
based on the instance method parameter嗯,你的老师也错了……这里没有实例方法,只有静态方法……但是,你应该粘贴设置它的代码 -
你的老师检查你是否使用 Purshase 作为一个有意义的对象实例。在您的上下文中,发票编号和销售额不应是静态的。您需要对象实例来创建多个 purshase 对象,调用 purshaseObj.displaySalesInfo() 将显示该特定对象的信息。见:stackoverflow.com/questions/2671496/…
标签: java class static field instance