I have completed a program and it compiles fine. When I run it, it seems to run fine. The only thing is that I am missing element data for two of the objects I am printing out in the text area of this JFrame. I an array called printerProduct[5], that has three objects of type Supplier, and two of type Printer. I am needing to display the information for each object, plus a restocking fee for each object, and a total value for the entire inventory. What I don't understand is why I am missing information on one object from Supplier, and on one object from Printer. This program isn't the only one that does this. I had the instructor send me a program without the GUI code included and her's does the same thing...missing information on objects from different classes. I am not using an IDE, I am using TextPad, but I have never had a problem with this text editor before. I have included the full program below if you want to compile it and see for yourself. The items that are missing are the Supplier Name, and the Restocking Fee. I don't have many notes in the program yet, so please subdue the critique monster. I want to make sure everything works fine before I add them all.
import java.util.Arrays;// Importsw in order for
import java.io.*; // the program to run
import java.text.NumberFormat;// correctly
import java.util.Locale; // without compile or runtime errors
import javax.swing.*;
public class InventoryPart3// declares class for InventoryPart1
{
public static Printer[] sortArray (Printer[] product)// sort method for sorting the arrays by product name
{
String[] names = new String [product.length];
Printer [] sorted = new Printer[product.length];
for (int i = 0; i < product.length; i++)
{
names[i] = product[i].getProductName();
}
Arrays.sort(names);
for (int i = 0; i < product.length; i++)
{
for (int j = 0; j < names.length; j++)
{
if (names[j].equalsIgnoreCase(product[i].getProductName()))
{
sorted[j] = product[i];
break;
}
}
}
return sorted;// returns arrays sorted by product name
}
public static double calculateInventoryTotal(Printer[]printerProduct){
double total = 0;
for (int i = 0; i < printerProduct.length; i++){
total+= printerProduct[i].getInventoryValue();
}
return total;
}
public static void main(String args[])// main method
{
NumberFormat nf = NumberFormat.getCurrencyInstance(Locale.US);// formats the numbers for dollar values
Printer[]printerProduct = new Printer[5];// instantiates new array from Printer class
Supplier kodak = new Supplier(1437, "InkSmart", 17, 29.99, "Kodak");
Printer lexmark = new Printer(2598, "All-In-One", 23, 34.89 );
Supplier saavin = new Supplier(9956, "PortaPrint", 21, 21.99, "Saavin" );
Printer kodak1 = new Printer(1112, "PageSmart", 15, 59.99);
Supplier canon = new Supplier(1145, "LaserJet", 14, 24.99, "Canon");
printerProduct [0] = kodak;
printerProduct [1] = lexmark;
printerProduct [2] = saavin;
printerProduct [3] = kodak1;
printerProduct [4] = canon;
printerProduct = sortArray(printerProduct);
double inventoryTotal = calculateInventoryTotal(printerProduct);
JTextArea textArea = new JTextArea(40,30);
textArea.setText("");
textArea.setEditable(false);
for (int i = 0; i < printerProduct.length; i++){
textArea.append("\n" +printerProduct[i].toString() + "\n");
}
textArea.append("\n\nInventory Total Value: " + nf.format(inventoryTotal)+ "\n\n");
JFrame frame = new JFrame();
frame.getContentPane().add(new JScrollPane(textArea));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
frame.setTitle("PRINTER INVENTORY");
}// ends main method
}// ends public class InventoryPart3
import javax.swing.*;
import java.text.NumberFormat;
import java.util.Locale;
class Printer// class Printer declaration
{
public int itemNumber;// variable declarations for class Printer
public String productName;
public int inStock;
public double unitPrice;
NumberFormat nf = NumberFormat.getCurrencyInstance(Locale.US);
public Printer (int itemNumber, String productName, int inStock, double unitPrice )// declares object's variavle types, and names
{
this.itemNumber = itemNumber;
this.productName = productName;
this.inStock = inStock;
this.unitPrice = unitPrice;
}
public void setItemNumber (int itemNumber)// method sets itemNumber variable
{
this.itemNumber = itemNumber;
}
public int getItemNumber ()// get method for itemNumber
{
return itemNumber;
}
public void setProductName (String productName)// set method for productName
{
this.productName = productName;
}
public String getProductName()// get method for productName
{
return productName;
}
public void setInStock(int inStock)// set method for inStock
{
this.inStock = inStock;
}
public int getInStock()// get method for inStock
{
return inStock;
}
public void setUnitPrice (double unitPrice)// set method for unitPrice
{
this.unitPrice = unitPrice;
}
public Double getUnitPrice ()// get method for unitPrice
{
return unitPrice;
}
public Double getInventoryValue ()// get method for inventoryValue. Calculates value of entire inventory
{
return unitPrice * inStock;
}
public String toString (){
return "Printer Name: " + productName + "\n" +
"Item Number: " + itemNumber + "\n" +
"In Stock: " + inStock + "\n" + "Unit Price: "
+ nf.format(unitPrice) + "\n" + "Item Total: " +
nf.format(getInventoryValue());
}
}
class Supplier extends Printer// class Supplier declaration extending class Printer
{
private String supplierName;// declares attribute
public Supplier(int itemNumber, String productName, int inStock, double unitPrice, String supplierName)
{
super ( itemNumber, productName, inStock, unitPrice);
this.supplierName = supplierName;
}
public void setSupplierName(String supplierName)// set method for supplierName variable
{
this.supplierName = supplierName;
}
public String getSupplierName()// get method for supplierName variable
{
return supplierName;
}
public double calculateRestockFee()// method for calcualating restock fee
{
return super.getInventoryValue() * .05;
}
public String toString (){
return super.toString() + "\n" + "Supplier Name: " + supplierName + "\n"
+ "Restock Fee: " + nf.format(calculateRestockFee());
}
}