2014-12-29 17 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);** 




}