2014-12-29 5 views
2

가격이나 수량 객체를 0으로 설정하지 않은 음수로 설정하는 경우를 제외하고는이 프로그램을 거의 완료했습니다. 가격이 아니라면 양수는 0.0으로 설정해야하며 양수가 양수가 아닌 경우 0으로 설정해야합니다. 여기에 내 코드가있어 어디에서 잘못 됐는지 말할 수 있습니다. 당신이 방법을 세터에 당신은 방법 setPrice에서 즉, 경우 price<0 다음 세트 가격 0으로 상태를 확인하는자바 인보이스 프로그램 - 수량을 0으로 설정 가격을

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

:

이 운동 프로그램하는 방법 3.12 송장 클래스 양식 Deitel 10 일 버전입니다. 그러나 당신은 그러한 체크가없는 값진 생성자에 대해 논쟁을하고 있습니다. 체크 인 생성자도 다음과 같이 추가하십시오. -

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; 

} 

동일한 수량 계산을 위해 같은 방법으로 생성자에 수량 검사를 추가하십시오.

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

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

에 setQuantity 방법 잘못된 검사를하고있다 -이 :

은 또한에 setQuantity에 조건에 유효한 변화가되지 않습니다. if (카운트 > 0)을 if (카운트 <)로 변경하십시오. 이 변경 후에도 set 메소드를 전혀 사용하지 않으므로 작동하지 않아야합니다. 생성자의 변수를 초기화하는 동안이 작업을 수행 할 수 있습니다.

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



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




}