2016-05-08 9 views
0

数量が正数でない場合は、0に設定する必要があります。 1品目あたりの価格が正でない場合は、0.0に設定する必要があります。 私は負の数を入力しても、ゼロではなく負の変数を設定し続けます。私のJavaクラスの検証はなぜ機能していませんか?

これは私のクラスパッケージcom.companyです。

/** 
* Created by juliodiaz on 5/7/16. 
*/ 
public class Invoice { 

    private String partNumber; 
    private String partDescription; 
    private int partQuantity; 
    private double partPrice; 

    public Invoice(String partNumber, String partDescription, int partQuantity, double partPrice) { 
     this.partNumber = partNumber; 
     this.partDescription = partDescription; 
     this.partQuantity = partQuantity; 
     this.partPrice = partPrice; 
    } 

    public String getPartNumber() { 
     return partNumber; 
    } 

    public void setPartNumber(String partNumber) { 
     this.partNumber = partNumber; 
    } 

    public String getPartDescription() { 
     return partDescription; 
    } 

    public void setPartDescription(String partDescription) { 
     this.partDescription = partDescription; 
    } 

    public int getPartQuantity() { 
     return partQuantity; 
    } 

    public void setPartQuantity(int partQuantity) { 
     this.partQuantity = partQuantity; 
    } 

    public double getPartPrice() { 
     return partPrice; 
    } 

    public void setPartPrice(double partPrice) { 
     this.partPrice = partPrice; 
    } 

    public double invoiceAmountMethod(double partPrice, int partQuantity) { 
     if (partQuantity < 0 || partPrice < 0.0) { 
      this.partQuantity = 0; 
      return partPrice * partQuantity; 
     } 
     else 
      return partPrice * partQuantity; 
    } 
} 

//Main method 
package com.company; 

public class Main { 

    public static void main(String[] args) { 
     // write your code here 

     Invoice myTruck = new Invoice("A101", "Wheels", -2, 100.00); 

     System.out.println(myTruck.getPartDescription()); 
     System.out.println(myTruck.getPartNumber()); 
     System.out.println(myTruck.getPartQuantity()); 
     System.out.println(myTruck.getPartPrice()); 

     double price = myTruck.getPartPrice(); 
     int quantity = myTruck.getPartQuantity(); 

     System.out.println("The total cost is " + myTruck.invoiceAmountMethod(price, quantity)); 

    } 
} 

OUTPUT

Wheels 
A101 
-2 
100.0 
The total cost is -200.0 
+1

メソッドにブレークポイントを設定しましたか? – ryekayo

答えて

1

あなたが代入している:

this.partQuantity = 0; 

をしかし、あなたが返す:

return partPrice * partQuantity; 

(メタに渡されたパラメータod)。

あなたは返すことでそれを修正することができます:

return this.partPrice * this.partQuantity; 

、あなたが本当にこのメソッドに任意のパラメータを渡すべきではありません。

0

ここに必要なものは次のとおりです。

public double invoiceAmountMethod(double partPrice, int partQuantity) { 

    return (partQuantity < 0 || partPrice < 0.0)?0.0:partPrice * partQuantity;   

} 
関連する問題