2014-12-29 16 views
2

我已经非常完成这个程序,除了当我设置一个价格或数量对象为负数时,它不会设置为0.方向说如果价格不是一个正数应该设置为0.0,如果数量不是正数,它应该设置为0.这里是我的代码,任何人都可以告诉我我哪里出错了。Java发票程序 - 将数量设置为0设置价格为0.0

这次演习是3.12发票类形式的Deitel第10版如何编程:

public class Invoice { 
private String partNumber; 
private String partDescription; 
private int quantity; 
private double priceperitem; 
private double amount; 
public Invoice(String number, String partDescription, int quantity, double price) 
{  
     this.partNumber = number; 
     this.partDescription = partDescription; 
     this.quantity = quantity; 
     this.priceperitem = price; 
}  
public void setPartNumber(String number) 
{   
     partNumber = number;    
}  
public String getPartNumber() 
{   
     return partNumber; 
} 
public void setPartDescription (String description) 
{   
     partDescription = description; 
}  
    public String getPartDescription(){   
     return partDescription;   
    } 
    public void setQuantity(int count){   
     if(count > 0) 
      quantity = 0;   
    }  
    public int getQuantity(){   
     return quantity; 
    } 
    public void setPrice (double price){    
     if(price > 0.0) 
      priceperitem = price;   
     if(price < 0.0) 
      priceperitem = 0.0; 
    }  
    public double getPrice(){   
     return priceperitem; 
    } 
    public double getInvoiceAmount(){   
     amount = getQuantity() * getPrice();   
     return amount; 
    }  
} 

import java.util.Scanner; 
public class InvoiceTest { 
public static void main(String[] args) {   
    int quantity; 
    double price; 
    double invoiceAmount;  
    Invoice invoice1 = new Invoice("1234","Hammer",-5, -39.75);  
    Scanner keyboard = new Scanner (System.in);  
    System.out.printf("Part number: %s\n", invoice1.getPartNumber()); 
    System.out.printf("Part Description: %s\n", invoice1.getPartDescription()); 
    System.out.printf("Quantity: %s\n", invoice1.getQuantity()); 
    System.out.printf("Price: %s\n", invoice1.getPrice()); 
} 
} 

回答

1

您在方法setPrice检查的条件,如果price<0然后设置价格为0,在你的setter方法,即。但是,你已经通过价格构造函数,没有这样的检查。添加在构造函数中检查过: -

public Invoice(String number, String partDescription, int quantity, double price) 
{ 
    this.partNumber = number; 
    this.partDescription = partDescription; 
    this.quantity = quantity; 

    if(price > 0.0) 
    priceperitem = price; 

    if(price < 0.0) 
    priceperitem = 0.0; 

} 

同去的数量检查,添加您在类似的方式在数量构造。

另外请注意,您在setQuantity条件是不是有效改变: -

if(quantity > 0) 
    this.quantity = price; 

    if(quantity < 0) 
    this.quantity = 0.0; 
0

setQuantity方法是做一张作废的支票。如果(计数> 0)更改为if(计数< 0)。即使在这个变化之后,它也不应该起作用,因为你根本没有使用set方法。您可以在初始化构造函数中的变量时做到这一点,

public Invoice(String number, String partDescription, int quantity, double price) 
{ 



    this.partNumber = number; 
    this.partDescription = partDescription; 
    **setQuantity(quantity); 
    setPrice(price);** 




}