I need help with this code. I am already a week late on this part because part 2 took to long to code. I am not getting the LeatherBlueDot class to compile. I am getting a message that in my constructor statement saying each variable has private access in class SoftballInv3, but I used the super method to declare them. I am not if I am explaining this correctly. I am very new to Java and struggling. Can anyone help? I am posting three classes needed. The Test class is supposed to display the arrays. Here they are beginning with the Test class.

// Inventory program part two
	// for softball inventories
	// from Als sporting goods


	public class SoftballInvTest3
	{
		// begins main method
		public static void main ( String args[])
		{
                    // creats a welcome message
                    System.out.println( "Welcome to Al's Sporting Goods softball inventory" );

                    // displays headers for the inventory
                    System.out.printf( "\n%4s%26s%10s%5s%9s%11s%13s", "ITEM", "BRAND NAME", "TYPE", "QTY",
							"PRICE", "RESTOCK", "INV VALUE" );

					// lists all of the arrays used in this program
                    int itemNumber[] = {1001,1002,1003,1004,1005,1006, 1007};
                    int ballCount[] = {36, 48, 12, 72, 24, 96, 24 };
                    double ballPrice[] = { 5.99, 4.99, 5.49, 6.99, 7.99, 1.99, 3.99 };
                    String itemName[] = {"Blue Dot-Worth", "Gold Dot-Worth", "Green Dot-Worth", "Super Blue Dot-Worth", 
											"Demarini Evil Ball",	"Rawlings practice balls", "Demarini Core 44" };
                	double subTotal[] = new double [7];
					double reStock[] = new double [7];
					String coverType[] = {"leather", "synthetic", "synthetic", "leather", "synthetic",
									"leather", "leather"};

                    // created new objects of softballinv2 class
                    SoftballInv3 softBall1 = new SoftballInv3();
					LeatherBlueDot softBall2 = new LeatherBlueDot();
                    // uses methods of softballinv public class to determine value

                    softBall1.sortArrayName(itemName);
                    softBall1.displayArrays(itemNumber, ballCount, ballPrice, itemName, subTotal);
                    softBall1.getTotalOfInv(subTotal);
                    softBall2.getReStock(stock);
                    softBall2.getTotalOfInv(subTotal);
					softBall2.sortArrayName( itemName);
					softBall2.displayArrays(itemNumber, ballCount, coverType, ballPrice, reStock, itemName, subTotal);
		} // ends main method
} // ends public class

// This is class of SoftballInvPart3
// this file computes totals and
// creates array

public class SoftballInv3
{

    private int item[]; // array of item numbers
	private String name[];
    private int balls[]; // array for quantity of balls
	private double prices[]; // array for price of each ball
	private double subs[]; // array created for totals of item inventory


        // constructor that initializes arrays for each element of inventory list
	public SoftballInv3(int itemNumber[], String itemName[], int ballCount[], double ballPrice[], double subTotal[])
	{


                item = itemNumber; // stores item number in array
                balls = ballCount; // stores number of balls per for item number
				prices = ballPrice; // stores price of each ball
				subs = subTotal; // stores total price of each item
				name = itemName; // stores brand Names





	}// end public Softball array constructor

		// method to display value of entire inventory
		public void getTotalOfInv(double subs[])
		{

			double total = 0;

			for ( int counter = 0; counter < subs.length; counter++ )
				total += subs[ counter ];
			System.out.printf( "\nTotal of entire inventory is: %.2f\n", total );

		} // end set display value method


       	// method call to displays sorted arrays
	   	public void displayArrays(int item[], int balls[], double prices[], String name[], double subs[])
	   	{
	   		for ( int j = 0; j < name.length; j++)
	   		System.out.printf("%4s%26s%15s%9s%24.2f\n", item[j], name[j], balls[j],
	   					 prices[j], subs[j] = (balls[j] * prices[j]));
		} // end method to display the arrays

		// method to sort the the itemName array alphabetically
       	public void sortArrayName(String itemName[])
		{
			int j;
			boolean flag = true;  //to determine when the sort is finished
			String temp;

			while ( flag ) // loops through array while flag is false
			{
				flag = false;
				for ( j = 0;  j <itemName.length - 1;  j++ )
				{
					if ( itemName[ j ].compareToIgnoreCase( itemName[ j+1 ] ) > 0 )
					{                                             // ascending sort
			     		temp = itemName[ j ];
			        	itemName[ j ] = itemName[ j+1];
			        	itemName [ j+1] = temp;
			        	flag = true;
			  		} // end if
				}
			} // end while
		}





} // end class SoftballInv2

// This class is sub class of
	// of the SoftballInv3 class
	// that uses inheritance to add one more
	// item to products

	public class LeatherBlueDot extends SoftballInv3
	{
		private double stock[]; //re-stock fee for leather balls
		private String cover[]; // initiates array variable

		// five argument constructor
		public LeatherBlueDot(int itemNumber[], String itemName[], String coverType[], int ballCount[],
				double ballPrice[], double subTotal[], double reStock[])
		{

			super( item, name, balls, prices, subs );

			getReStock( stock ); // method to add restocking fee
			System.out.printf( "\nThe new inventory that adds a restocking fee and cover type:\n");
			stock = reStock;
			cover = coverType;

		}// end constructor

		// adds restocking fee to total price of each product
		public void getReStock( double prices[] )
		{
			double stock = 0;

			for ( int counter = 0; counter < prices.length; counter++ )

			stock = prices[ counter ] * 1.05;

		} // end method




		public double getTotalOfInv()
		{
			return getTotalOfInv();
		}


		// method call to displays sorted arrays
		public void displayArrays(int item[], String name[], String cover[], int balls[], double prices[],
								double stock[], double subs[])

		{
			 for ( int j = 0; j < name.length; j++)
			  System.out.printf("%4s%26s%15s%9s%24.2f\n", item[j], name[j], cover[j], balls[j],
			   			prices[j], stock[j], subs[j] = (balls[j] * prices[j]));

		} // end method to display the arrays


	}

I had already tried that once before and didn't work but I went ahead and tried again just to see what error I was getting. There are 5 errors, all say the same thing for each variable from softballinv3 class. The messages are "can't reference variable before super type constructor has been called". I don't understand why it says that because the super type constructor is the first statement in the class.

Here is my code again. Nothing has changed, I am just wrapping the code in tags correctly this time.

// Inventory program part two
// for softball inventories
// from Als sporting goods


public class SoftballInvTest3
{
       // begins main method
       public static void main ( String args[])
      {
             // creats a welcome message
             System.out.println( "Welcome to Al's Sporting Goods softball inventory" );

             // displays headers for the inventory
               System.out.printf( "\n%4s%26s%10s%5s%9s%11s%13s", "ITEM", "BRAND                                     NAME", "TYPE", "QTY",
							"PRICE", "RESTOCK", "INV VALUE" );

					// lists all of the arrays used in this program
                    int itemNumber[] = {1001,1002,1003,1004,1005,1006, 1007};
                    int ballCount[] = {36, 48, 12, 72, 24, 96, 24 };
                    double ballPrice[] = { 5.99, 4.99, 5.49, 6.99, 7.99, 1.99, 3.99 };
                    String itemName[] = {"Blue Dot-Worth", "Gold Dot-Worth", "Green Dot-Worth", "Super Blue Dot-Worth", 
											"Demarini Evil Ball",	"Rawlings practice balls", "Demarini Core 44" };
                	double subTotal[] = new double [7];
					double reStock[] = new double [7];
					String coverType[] = {"leather", "synthetic", "synthetic", "leather", "synthetic",
									"leather", "leather"};

                    // created new objects of softballinv2 class
                    SoftballInv3 softBall1 = new SoftballInv3();
					LeatherBlueDot softBall2 = new LeatherBlueDot();
                    // uses methods of softballinv public class to determine value

                    softBall1.sortArrayName(itemName);
                    softBall1.displayArrays(itemNumber, ballCount, ballPrice, itemName, subTotal);
                    softBall1.getTotalOfInv(subTotal);
                    softBall2.getReStock(stock);
                    softBall2.getTotalOfInv(subTotal);
					softBall2.sortArrayName( itemName);
					softBall2.displayArrays(itemNumber, ballCount, coverType, ballPrice, reStock, itemName, subTotal);
		} // ends main method
} // ends public class

// This is class of SoftballInvPart3
// this file computes totals and
// creates array

public class SoftballInv3
{

    private int item[]; // array of item numbers
	private String name[];
    private int balls[]; // array for quantity of balls
	private double prices[]; // array for price of each ball
	private double subs[]; // array created for totals of item inventory


        // constructor that initializes arrays for each element of inventory list
	public SoftballInv3(int itemNumber[], String itemName[], int ballCount[], double ballPrice[], double subTotal[])
	{


                item = itemNumber; // stores item number in array
                balls = ballCount; // stores number of balls per for item number
				prices = ballPrice; // stores price of each ball
				subs = subTotal; // stores total price of each item
				name = itemName; // stores brand Names





	}// end public Softball array constructor

		// method to display value of entire inventory
		public void getTotalOfInv(double subs[])
		{

			double total = 0;

			for ( int counter = 0; counter < subs.length; counter++ )
				total += subs[ counter ];
			System.out.printf( "\nTotal of entire inventory is: %.2f\n", total );

		} // end set display value method


       	// method call to displays sorted arrays
	   	public void displayArrays(int item[], int balls[], double prices[], String name[], double subs[])
	   	{
	   		for ( int j = 0; j < name.length; j++)
	   		System.out.printf("%4s%26s%15s%9s%24.2f\n", item[j], name[j], balls[j],
	   					 prices[j], subs[j] = (balls[j] * prices[j]));
		} // end method to display the arrays

		// method to sort the the itemName array alphabetically
       	public void sortArrayName(String itemName[])
		{
			int j;
			boolean flag = true;  //to determine when the sort is finished
			String temp;

			while ( flag ) // loops through array while flag is false
			{
				flag = false;
				for ( j = 0;  j <itemName.length - 1;  j++ )
				{
					if ( itemName[ j ].compareToIgnoreCase( itemName[ j+1 ] ) > 0 )
					{                                             // ascending sort
			     		temp = itemName[ j ];
			        	itemName[ j ] = itemName[ j+1];
			        	itemName [ j+1] = temp;
			        	flag = true;
			  		} // end if
				}
			} // end while
		}





} // end class SoftballInv2

// This class is sub class of
	// of the SoftballInv3 class
	// that uses inheritance to add one more
	// item to products

	public class LeatherBlueDot extends SoftballInv3
	{
		private double stock[]; //re-stock fee for leather balls
		private String cover[]; // initiates array variable

		// five argument constructor
		public LeatherBlueDot(int itemNumber[], String itemName[], String coverType[], int ballCount[],
				double ballPrice[], double subTotal[], double reStock[])
		{

			super( item, name, balls, prices, subs );

			getReStock( stock ); // method to add restocking fee
			System.out.printf( "\nThe new inventory that adds a restocking fee and cover type:\n");
			stock = reStock;
			cover = coverType;

		}// end constructor

		// adds restocking fee to total price of each product
		public void getReStock( double prices[] )
		{
			double stock = 0;

			for ( int counter = 0; counter < prices.length; counter++ )

			stock = prices[ counter ] * 1.05;

		} // end method




		public double getTotalOfInv()
		{
			return getTotalOfInv();
		}


		// method call to displays sorted arrays
		public void displayArrays(int item[], String name[], String cover[], int balls[], double prices[],
								double stock[], double subs[])

		{
			 for ( int j = 0; j < name.length; j++)
			  System.out.printf("%4s%26s%15s%9s%24.2f\n", item[j], name[j], cover[j], balls[j],
			   			prices[j], stock[j], subs[j] = (balls[j] * prices[j]));

		} // end method to display the arrays


	}

Suggestions:

1. Where your LeatherBlueDot constructor (the one with 6 arguments) calls super, the arguments you have in super don't exist. item, name, balls, prices, and subs are not defined in the LeatherBlueDot class. You probably meant to say super( itemNumber, itemName, ballCount, ballPrice, subTotal );

2. You have the line SoftballInv3 softBall1 = new SoftballInv3(); but you don't have a no argument constructor in your SoftBallInv3 class. You have LeatherBlueDot softBall2 = new LeatherBlueDot(); but you don't have that constructor in the LeatherBlueDot class either.

3. softBall2.getReStock(stock); Where is stock declared?
4. softBall2.displayArrays(itemNumber, ballCount, coverType, ballPrice, reStock, itemName, subTotal); You seem to be calling this wrong (with the wrong number or types of arguments)

This article has been dead for over six months. Start a new discussion instead.