Question: Where does productArray come from in these:
for ( Product product : productArray )
&
Arrays.sort( productArray, new ProductComparator() );
Question: What am I doing wrong? How do I make this sort?
Related Post from Yesterday
EDIT
:::EDIT:::
Ok I took your advice here about
Product productArray[] = new Product[ARRAY_LENGTH]
Now it is broke here
/tmp/jc_22339/InventoryPart2.java:99: cannot find symbol
symbol : variable productArray
location: class InventoryPart2
for ( Product product : productArray ) {
^
/tmp/jc_22339/InventoryPart2.java:101: cannot find symbol
symbol : variable productArray
location: class InventoryPart2
inventoryValue += productArray.calcInventoryValue();
^
And if I do it like
for ( Product product : productArray[] ) {
I get
/tmp/jc_23524/InventoryPart2.java:69: '.class' expected
for ( Product product : productArray[] ) {
^
So I am back stuck.
Begin program
:::Updated Code:::
/**
This program stores a collection of a product and its variables in a java array
It will sort and display the information with a total
*/
// Import statements go here
import java.util.Scanner;// Import and use scanner
import java.util.Arrays;
public class InventoryPart2 {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {// begin main
// Define your array of product objects and index here
final int ARRAY_LENGTH = 5;// declare constant
final int version = 2;// declare int version number
// Create instance of Scanner class
Scanner input = new Scanner( System.in );// new Scanner for CL input
// Set counter to loop x times to populate your array of product objects
int counter = 0;
// Initialize your product array with the number of objects to populate it with
Product productArray[] = new Product[ARRAY_LENGTH];// create array Product of class Product
// Welcome message
System.out.printf( "\n%s%d\n" ,
"Welcome to the Productentory Program v.", version );
// Construct default values for Product
productArray[0] = new Product("EThe Invisible Man", 0, 8.50);
productArray[1] = new Product("DThe Matrix", 1, 17.99);
productArray[2] = new Product("CSe7en", 7, 12.99);
productArray[3] = new Product("BOceans Eleven", 11, 9.99);
productArray[4] = new Product("AHitch Hikers Guide to the Galaxy", 42, 18.69);
/*// Loop as many times as your counter variable
{
// Instantiate a product object
// Prompt for product name and call the set method on your product object
// Prompt for item number and call the set method on your product object
// Prompt for units in stock and call the set method on your product object
// Prompt for unit price and call the set method on your product object
// store product object in array element
//Destroy product object reference
product = null;
// Flush the buffer
input.nextLine();
}*/
// Sort product array by product name using Comparator implementation class
sortProductArray();
// Print sorted array
for ( Product product : productArray[] ) {
if ( counter == 0 )
System.out.printf( "\n%s\n", "Sorted Inventory of DVD movies");
System.out.printf( "\n\n%s%d\n%s%s\n%s%d\n%s%,.2f\n%s%,.2f\n",
"Item Number: ",counter,
"DVD Title: ",productArray[counter].getProductTitle(),
"Copies in stock: ",productArray[counter].getUnitsInStock(),
"Price each disk: $",productArray[counter].getUnitPrice(),
"Value of disks: $",productArray[counter].calcInventoryValue());//End print
counter++;
if ( counter == productArray.length)// on last counter of loop print total
System.out.printf( "\n%s%,.2f\n\n\n",
"Collection Value: $",calcTotalInventoryValue());
}
// Calculate total Inventory value
}
// method to calculate the total Inventory value
private static double calcTotalInventoryValue()
{
double inventoryValue = 0;
// Iterate array of product objects and calculate total value of entire Inventory
for ( Product product : productArray ) {
// accumulate inventory value from each product object in array
inventoryValue += productArray.calcInventoryValue();
}
return totalInventoryValue;
} // end method calcInventoryValue
// method to sort product array
private static void sortProductArray()
{
Arrays.sort( productArray, new ProductComparator() );
} // end method calcInventoryValue
}
You either have to have an array of Product as a member of the InventoryPart2 class OR passed into the sortProductArray method. You’ll have to change that method to return a reference to the sorted array if you choose the latter.
Your Product array is in the static main method and not part of the object, so you’ve got a problem. I’d recommend that you do something like this:
Object oriented programming is about encapsulation and information hiding. Write the class in such a way that clients don’t have to know or care whether you’re using an array or something else to hold onto Products. You’re abstracting the idea of Inventory here.
UPDATE:
This is your code, only better and running:
I removed those comments you add everywhere. They’re just clutter; I’d recommend that you not do that anymore. Better to make your code more readable and self-documenting by using better variable and method names.
This still isn’t the way I’d recommend that you write it, but it works. You’re more likely to see why this works if I don’t alter it too much.
UPDATE 2:
Just in case you’re interested, here’s how I might write it: