Your problem is actually very small and easy to solve.
Code:
super( item, artist, units, price );
Here you call the constructor of a class. I know, you know, he must call the constructor of class "cd". But java can't figure that out. You must tell Java which class he must call to use the constructor of it. This is done in the first line of the class:
Code:
class genre extends cd
by using this as first line for the class genre. This class will now have all methods/attributes available from cd. Including the constructor of cd which you call with the super().
Everything runs fine now. Just some "is never used"-warnings.
Full code:
Code:
import java.util.Scanner;
import java.util.Arrays;
public class InventoryProgramPart3{
// main method begins program execution
public static void main(String args[]) {
// create Scanner to obtain input
Scanner input = new Scanner( System.in );
// display welcome message
System.out.println( "Welcome to Felt's Inventory!" );
// cd
cd[] cd = new cd[100]; // array of 100 cd
cd GeorgeStraight = new cd(1, "George Straight", 5, 14.00);
cd CarrieUnderwood = new cd(2, "Carrie Underwood", 4, 13.99);
cd FaithHill = new cd(3, "Faith Hill", 6, 15.00);
cd JoshTurner = new cd(4, "Josh Turner", 8, 12.99);
cd GarthBrooks = new cd(5, "Garth Brooks", 3, 11.99);
// display inventory one at a time
GeorgeStraight.showInventory();
CarrieUnderwood.showInventory();
FaithHill.showInventory();
JoshTurner.showInventory();
GarthBrooks.showInventory();
// sort cds by name
for ( int i = 0; i < args.length; i++ )
System.out.println( args[i] + "," );
double array[] = { 70.00, 55.96, 90.00, 103.92, 35.97 };
double total = 0;
// add each value to total
for ( int counter = 0; counter < array.length; counter++)
total += array[ counter ];
System.out.printf( "\nTotal inventory value is: $%.2f\n", total );
System.out.println( "\nThank you for using Felt's Inventory\n" );
} // end main method
} // end class InventoryProgramPart3
class cd
{
public int cdItem;
public String cdArtist;
public int cdUnits;
public double cdPrice;
// set cd Item
public void setCdItem(int item) {
this.cdItem = item;
} // end method set Cd Item
//return cd Item
public int getCdItem() {
return cdItem;
} // end method get Cd Item
// set cd Artist
public void setCdArtist(String artist) {
this.cdArtist = artist;
} // end method set Cd Artist
//return cd Artist
public String getCdArtist() {
return cdArtist;
} // end method get cd Artist
// set cd Units
public void setCdUnits(int units) {
this.cdUnits = units;
} // end method set Cd Units
//return cd in stock
public int getCdUnits() {
return cdUnits;
} //end method get Cd Units
public void setCdPrice(double price) {
this.cdPrice = price;
} //end method set Cd Price
//return cd Price
public double getCdPrice() {
return cdPrice;
} //end method get Cd Price
// calculate value of cd inventory
public double getValue()
{
return cdUnits * cdPrice;
}// end method value of cd inventory
// constructor
cd( int item, String artist, int units, double price )
{
cdItem = item;
cdArtist = artist;
cdUnits = units;
cdPrice = price;
} // end constructor
// display inventory
public void showInventory()
{
System.out.println(); // blank line
System.out.println( "Cd Item: "+cdItem );
System.out.println( "Cd Artist: "+cdArtist );
System.out.println( "Units in Stock: "+cdUnits );
System.out.printf( "Unit Price: $%.2f", cdPrice );
genre cd = new genre
( 1, "George Straight", 5, 14.00, "Country" );
System.out.println( "\nGenre: "+cd.getGenre() );
// value() method and display value
System.out.printf( "\nInventory value of "+cdArtist+ " is = $%.2f\n", getValue() );
} // end display inventory
} // end class cd
class genre extends cd
{
// holds cd genre
private String cdGenre;
// constructor
genre( int item, String artist, int units, double price, String genre )
{
super( item, artist, units, price ); cdGenre = genre;
} // end constructor
// set cd genre
public void setGenre( String genre )
{
this.cdGenre = genre;
} // end method set cd genre
// return cd genre
public String getGenre()
{
return cdGenre;
} // end method get cd genre
// add 5% restocking fee
public double getValue()
{
return super.getValue() * 1.05;} // end method return cd genre
// calculate restocking fee
public double getRestockingFee()
{
return super.getValue() * .05;} // end method caluclate restocking fee
// return String cdGenre
public String toString()
{
String formatString = "Genre: %s";
formatString += "Restocking Fee: $%.2f";
formatString = String.format( formatString, cdGenre, super.getValue() * 0.05 );return( formatString + super.toString() );
} // end toString()
// display inventory
public void showInventory()
{
super.showInventory();System.out.println( toString() );
// Display value plus restocking fee
System.out.printf( "\nInventory value of "+cdArtist+ " is = $%.2f\n",
getRestockingFee() );
} // end method display inventory
} // end class genre
PS: it's more logical to put constructors right after the declaration of the class and its attributes. I hope you have 3 seperate classes instead of writing it all in 1. Might be easier to look at in the browser if you splitted the 3 classes up with 3 differente [CODE][/CODE'] tags.
Don't forget to use public/private in front of the new classes. I suppose Java uses a standard value if you leave it empty anyway.
Bookmarks
Algorithms and Data Structures
Java tutorials
Algorithms Forum