计算不正确,无法弄清楚原因

时间:2013-09-24 00:02:43

标签: java math superclass

我有3个课程:OrderInternalOrderOrderTester。我一直在寻找一段时间以及我一直在看的东西我只是无法尝试将这些例子改为我需要的东西。

所以我遇到了InternalOrderOrderTester类的问题。到目前为止我的代码都是......

public class InternalOrder extends Order {
   public static final int DISCOUNT = 40/100; 

    public InternalOrder(String productName, int quantity) {
        super(productName, quantity, DISCOUNT);
        }

public void printInternalReport() {
    System.out.println("Printing internal report...");
}

}

并且

public class OrderTester {

public static void main(String[] args) {
    testCase1();
    testCase2();
    testCase3();
    testCase4();
    testCase5();
    testCase6();
    testCase7();
    testCase8();
    testCase9();
    testCase10();
}
public static void testCase1() {
    Order ord = new Order();

    System.out.println("Test Number : " + Order.orderNum + " Type of Order : Normal, " +  "Product Name : "  + "Order Quantity : " + "Discount : ");
}
public static void testCase2() {
    Order ord = new Order();

    System.out.println("Test Number : " + Order.orderNum + " Type of Order : Normal, " + "Product Name : "  + "Order Quantity : " + "Discount : ");
}

嗯,它会进行测试10,但目前情况完全相同。

以下是我需要的东西:

InternalOrder类将包含订购的Stellar Stationary员工的逻辑 内部固定库存作为其工作要求的一部分。

内部订单自动获得40%的折扣。

  • InternalOrder类是扩展Order类。
  • 是否包含名为final static的{​​{1}}字段。该字段用作常量 工作人员获得的折扣率应设为40%。

现在,我有这两个,但我不完全确定下一部分。

  • 该类包含一个构造函数。构造函数将接收两个 参数,产品名称和数量。构造函数是传递这些 其超类(Order)的参数以及DISCOUNT常量作为第三个参数 参数。

我是否需要在超类中添加任何内容,因为这让我非常困惑。使用DISCOUNT,我有一个很难导入的表,所以我只会生成几行。

OrderTester类用于启动程序并测试OrderTester和。{ Order个类,以确保它正常工作。

要运行十个测试,每个测试都应该采用自己的静态方法 它们应该通过InternalOrder调用testCase1()。每个测试都应该按照测试 下表:

testCase10()

通过这个测试。当我的数量和折扣是整数时,我不确定如何产生“N / A”。

如果您需要我的其他代码,我会在下面发布。

Test Number  Type of Order  Product Name  Order Quantity  Discount
1           "Normal"       "N/A"           "N/A"        "N/A"

1 个答案:

答案 0 :(得分:4)

此行可能是您的错误来源:

 public static final int DISCOUNT = 40/100; 

DISCOUNT为零。

原因是两个整数除法的结果是 trucated 到最近的较低整数 - 小数位被简单地删除。由于40/100.4,因此在删除小数位后,您将留下0

您基本上有两种选择:

将其保存为百分比:

public static final int DISCOUNT_PERCENT = 40; 

使用可存储小数的类型:

public static final double DISCOUNT = .4;

如果您选择第二个选项,您的生活可能会更容易,因为如果您使用int,只要您乘以它,您将面临类似的算术问题。