0
 import java.text.DecimalFormat; // For proper currency     
 import java.util.Arrays;
 import java.util.Comparator;


 public class Inventory {

public static void main( String args[] )

{

// Start array of software titles

Software[] aSoftware = new Software[4];

aSoftware[0]= new Software("Command and Conquer ", 6, 29.99, 10122); 
aSoftware[1]= new Software("Alice in Wonderland", 1, 10.99,10233);
aSoftware[2]= new Software("Doom", 1, 10.99, 10344);
aSoftware[3]= new Software("Walking Dead", 6, 9.99, 10455);

//Set currency format
DecimalFormat money = new DecimalFormat("$0.00");

// Sort in order of Software Name

Arrays.sort(aSoftware, new Comparator<Software>() {
public int compare(Software s1, Software s2) {
return s1.getSoftwareTitle().compareTo(s2.getSoftwareTitle());

}
});



// Display software title, number of units, cost, item number and total inventory

for (int i = 0; i < aSoftware.length; i++){ 

System.out.println("Software Title is "+ aSoftware[i].getSoftwareTitle() );

System.out.println("The number of units in stock is "+ aSoftware[i].getSoftwareStock() );

System.out.println("The price of the Software Title is "+ (money.format(aSoftware[i].getSoftwarePrice() )));

System.out.println( "The item number is "+ aSoftware[i].getSoftwareNum());

System.out.println( "The year of copyright is "+ aSoftware[i].getYear());

System.out.println( "The restocking fee is "+ aSoftware[i].getRestockingFee());

System.out.println( "The value of the Software Inventory is "+ (money.format(aSoftware[i].Softwarevalue() )));

System.out.println();   
            }

//output total inventory value

    double total = 0.0;
 for (int i = 0; i < 3; i++){ 
total +=  aSoftware[i].getCalculateInventory();            
            }
    System.out.printf("Total Value of Software Inventory is: \t$%.2f\n", total);

//end output total inventory value

 }
 } //end main

   public class Software

 {
// Declare variables



String SoftwareTitle;
int SoftwareStock;
double SoftwarePrice;
int SoftwareNum;
double CalculateInventory;
double SoftwareValue;
double value;   

Software( String softtitle, int softstock, double softprice, int softitemnum )

{
    // Create object constructor

    SoftwareTitle = softtitle;
    SoftwareStock = softstock;
    SoftwarePrice = softprice;
    SoftwareNum = softitemnum;

    } 

    // Set Software Title

    public void setSoftwareTitle( String softtitle )
    {
        SoftwareTitle = softtitle;
    } 


    // Return Software Title

    public String getSoftwareTitle()
    {
        return SoftwareTitle;
    } 

    // Set software inventory
    public void setSoftwareStock( int softstock)
    {
        SoftwareStock = softstock;
    } 

    // Return software inventory
    public int getSoftwareStock()
    {
        return SoftwareStock;
    }

    // Set software price

    public void setSoftwarePrice( double softprice )
    {
        SoftwarePrice = softprice;
    }

    // Return software price
    public double getSoftwarePrice()
    {
        return SoftwarePrice;

    }

    // Set item number

    public void setSoftwareNum( int softitemnum )
    {
        SoftwareNum = softitemnum;
  }         //

    //return software item number

    public int getSoftwareNum()
    {
        return SoftwareNum;
    } //


    // calculate inventory value

    public double Softwarevalue()
    {
        return SoftwarePrice * SoftwareStock;

    } 

    public void setCalculateInventory (double value){
        this.CalculateInventory = value;
    }

    public double getCalculateInventory(){
        double value = 0;
        for(int i = 0; i < 3; i++){
            value = Softwarevalue();
        }
        return value;
    }


 }//end method value

 //

public class Project3 extends Software 

 {
// Unique feature
private int year = 2012;


// Default Constructor
public Project3(String softtitle, int softstock, double softprice,int softitemnum,    int year) {
    super(softtitle, softstock, softprice, softitemnum);
    this.year = year;
}

 // Retuen Year
 public int getYear()
 {
    return year;
 }

 // Set year
 public void setYear(int year)
 {
    this.year = year;
 }

 // Calculate 5% restocking fee
 public double getRestockingFee()
 {
    return getSoftwarePrice() * getSoftwareStock() * 0.05;
 }

 public double getCalculateInventory()
 {
        double value = 0;
    for(int i = 0; i < 3; i++){
        value = Softwarevalue();
    }
    return value;
  }
  }

プロジェクト 3 サブクラスから getYear メソッドと getRestockingFee nethod を取得するためにシステムを取得できないことを除いて、私のプログラムは正常に動作します。私は正しい方向にナッジを使うことができました。何かクレイジーなものを見逃しているに違いありません。

4

1 に答える 1

0

オブジェクトが与えられたとき、Java コンパイラは、Softwareそれが本当にProject3. 実生活で、グラニー・スミスのリンゴを箱に入れて、箱の中にリンゴが入っていると言ったら、それが かどうか教えてくれますかboolean isGreen()? Javaにも同じ問題があります!

考えられる解決策は 3 つあります。

  1. Project3オブジェクトを構築するときは、それを変数に格納します (構築された型がProject3!

  2. JVM に次のように伝えます。「これは本当に Project3 です!」これを行うには、オブジェクトを正しい時間にキャストします。構文((Project3) mySoftware).getYear()

  3. getYear*スーパー*クラスでメソッドの意味を定義します。これは、「ねえ、すべてのりんごが緑色ではないと仮定してください ( return )」と言っているようなものです...しかし、それが Granny Smith サブクラスのりんご​​であることがわかっている場合は、すぐにisGreen()返します!falseisGreentrue

ソリューションの選択は、システムに何をさせたいかによって異なります。

于 2012-11-05T06:15:00.800 に答える