Hie every1, I am facing the same problem as my collegue Exception in thread "main" java.lang.NullPointerException.
We both urgently need a solution for this... can someone fix this error and paste the code for the fixed error? I am still weak in my logic, Your help is sincerely appreciated.
Below is the coding that has no compilation error, process completes but when 2nd entree is entered there will be an error.
Item Class
JAVA Code:
// ITEM CLASS
public class Item{
String itemNumber;
String itemDesc;
double sellPrice;
int quantity;
public boolean duplicate = true; //Declaration for equals method
private static int noEntries = 0;
public Item(String itemNumber, String itemDesc, double sellPrice, int quantity) {
setItemNumber(itemNumber);
setItemDesc(itemDesc);
setSellPrice(sellPrice);
setQuantity(quantity);
} //Constructor with arguments
public void setItemNumber(String itemNumber){
this.itemNumber = itemNumber;
} //Set method for itemNumber
public String getItemNumber(){
return itemNumber;
} //Get method for itemNumber
public void setItemDesc(String itemDesc){
this.itemDesc = itemDesc;
} //Set method for itemDesc
public String getItemDesc(){
return itemDesc;
} //Get method for ItemDesc
public void setSellPrice(double sellPrice){
this.sellPrice = sellPrice;
} //Set method for sellPrice
public double getSellPrice(){
return sellPrice;
} //Get method for sellPrice
public void setQuantity(int quantity){
this.quantity = quantity;
} //Set method for quantity
public int getQuantity(){
return quantity;
}
public void makeCopy (String itemNumber, String itemDesc, double sellPrice, int quantity) {
setItemNumber(itemNumber);
setItemDesc(itemDesc);
setSellPrice(sellPrice);
setQuantity(quantity);
}
public int getEntries () {
return noEntries;
}
public boolean searchName(String itemNumber) {
if(this.itemNumber.equals(itemNumber) == true)
return true;
else
return false;
}
public boolean equals (String itemNumber, String itemDesc, double sellPrice, int quantity) {
if(this.itemNumber.equals(itemNumber) == true && this.itemDesc.equals(itemDesc) == true &&
this.sellPrice == sellPrice && this.quantity == quantity)
return true;
else
return false;
} //Equals method that returns true if two objects are the same
}
Print Class
JAVA Code:
//PRINT CLASS
public class Print {
public static void option () {
System.out.println("1. Add Item Number");
System.out.println("2. Generate List of Record Entered");
System.out.println("3. Search Record by Item Number");
System.out.println("4. Modifiy Record");
System.out.println();
System.out.println("5. Exit");
System.out.println();
System.out.print("Enter your choice : ");
}
public static void sample () {
System.out.println("Sample of record to be keyed in correctly to avoide errors.");
System.out.println("***********************************************************");
System.out.println("Enter Name : xxxxxxxxx");
System.out.println("Enter Address : xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
System.out.println("Enter Phone Number : 0123456789");
System.out.println("Enter Email : [email]username@provider.com[/email]");
System.out.println("###########################################################\n");
}
public static void duplicateError () {
System.out.println("\nThis record has been entered.");
System.out.println("Duplicate record are not allow.\n");
}
public static void createBy () {
System.out.println("\n\nThank you for using.");
System.out.println("xxxx & xxxx, Q3.");
}
}
Main Program
JAVA Code:
//MAIN PROGRAM
import java.util.Scanner;
public class ItemProgram {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
Item[] items = new Item[100];
int i = 0;//Used in for-loop counts
int j = 0;//Used in for-loop counts
int entries = 0;//Record entries of records
int first = 0;//Check is the first record to be entered
boolean duplicate = true;//Check for duplication of record
boolean result = true;//Track seaching
int optionMenu = 0;//Used for menu
String optionContinue;//Used for continue option
//do-while loop for user to prompt back to main menu(optionMenu)
do{
Print.option();//print menu
optionMenu = input.nextInt();
//Add New Record
if(optionMenu == 1) {
System.out.println("\nAdd New Item");
System.out.print("No. of Entries : ");//Record number of entries at a time
int looping = input.nextInt();
System.out.println();
Print.sample();//Sample to guide users
//Number of entries's for-looping
for(i = 0; i < looping; ++i) {
System.out.print("Enter item number : ");
input.useDelimiter("\n");
String itemNumber = input.next();
System.out.print("Enter item description : ");
input.useDelimiter("\n");
String itemDesc = input.next();
System.out.print("Enter selling price : ");
double sellPrice = input.nextDouble();
System.out.print("Enter quantity : ");
int quantity = input.nextInt();
System.out.println("===========================================================");
//If first time key in date run statement
if(first == 0){
++first;//Track if is the first record key in
items[i] = new Item(itemNumber, itemDesc, sellPrice, quantity);
}
//Else continue key in record
else{
entries = items[0].getEntries();//Get number of entries entered
for(j=0; j<entries; ++j){
duplicate = items[j].equals(itemNumber, itemDesc, sellPrice, quantity);//Check for duplication of entries
if(duplicate == true) {
Print.duplicateError();
--i;
--looping;
break;
}
}
if(duplicate == false)//else save record
items[entries] = new Item(itemNumber, itemDesc, sellPrice, quantity);
}
}
}
//Generate List of Record Entered
else if(optionMenu == 2) {
System.out.println("Generate List of Record Entered");
entries = items[0].getEntries();//Get number of record entered
for(i=0; i<entries; ++i) {
System.out.println(i+1 + ". " + items[i].getItemNumber());
}
System.out.print("\nItem Number no : ");
int searchPerson = input.nextInt();
searchPerson = searchPerson - 1;
//Print record searched
System.out.println("Item Number : " + items[searchPerson].getItemNumber());
System.out.println("Item Description : " + items[searchPerson].getItemDesc());
System.out.println("Selling Price : RM " + items[searchPerson].getSellPrice());
System.out.println("Quantity : " + items[searchPerson].getQuantity());
}
//Search Record by Name
else if(optionMenu == 3) {
System.out.println("Search Record by Number");
System.out.print("Item Number : ");
input.useDelimiter("\n");
String searchName = input.next();
entries = items[0].getEntries();//Get entries of record entered
for(i=0; i<entries; ++i) {
boolean equals = items[i].searchName(searchName);//Search record
if(equals == true) {//Print if record found
System.out.println("\nRecord no. " + (i+1));
System.out.println("Item Number : " + items[i].getItemNumber());
System.out.println("Item Description : " + items[i].getItemDesc());
System.out.println("Selling Price: " + items[i].getSellPrice());
System.out.println("Quantity : RM" + items[i].getQuantity());
result = true;//Track if the record is found or not
}
else
result = false;//Track if the record is found or not
}
if(result == false)//Print if record not found
System.out.println("Record not found.");
}
//Modifiy Record
else if(optionMenu == 4) {
System.out.print("Entry No. : ");
int searchEntry = input.nextInt();
System.out.print("\n\nEnter Item Number : ");
input.useDelimiter("\n");
String itemNumber = input.next();
System.out.print("Enter Item Description : ");
input.useDelimiter("\n");
String itemDesc = input.next();
System.out.print("Enter Selling Price : ");
double sellPrice = input.nextDouble();
System.out.print("Enter Quantity : ");
int quantity = input.nextInt();
entries = items[0].getEntries();//Retrieve record entered
//Check for duplication
for(i = 0; i<entries; ++i) {
duplicate = items[i].equals(itemNumber, itemDesc, sellPrice, quantity);
}
if(duplicate == true)//print if duplicated record are found
Print.duplicateError();
else//Save if it not a duplicated record
items[searchEntry-1].makeCopy(itemNumber, itemDesc, sellPrice, quantity);
} //LAST CHECKED UNTIL HERE 9:04PM
//Exit program
else if(optionMenu == 5)
break;
//Check for continue looping
System.out.print("Do you want to continue (Y/N)?");
optionContinue = input.next();
System.out.println();
}while(optionContinue.equals("N") == false && optionContinue.equals("n") == false);
Print.createBy();
}
}