Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to check and Entry before adding and store it in an Array in Java?

good day.. i have an Address Book Program... it runs properly but it doesn't check if the user input was already stored in an array.. want i want to do is... after getting the user input compare it to the stored entry in an array and when it was unique... it will allow the user to add a new entry...

here's my old code in addEntry():

public void addEntry() {

entry[counter] = new AddressBookEntry();
entry[counter].setName(JOptionPane.showInputDialog("Enter name: "));
entry[counter].setAdd(JOptionPane.showInputDialog("Enter add: "));
entry[counter].setPhoneNo(JOptionPane.showInputDialog("Enter Phone No.: "));
entry[counter].setEmail(JOptionPane.showInputDialog("Enter E-mail: "));
counter++;

}

and here's what i am planning to do but it turns out to be an ERROR:

public void addEntry() {

    entry[counter] = new AddressBookEntry();
    SName = JOptionPane.showInputDialog("Enter name: ");//<-- asks user for the name
    if (!entry[counter].getName().equals(SName)) {//<--compare
        entry[counter].setName(JOptionPane.showInputDialog("Enter name: "));
        entry[counter].setAdd(JOptionPane.showInputDialog("Enter add: "));
        entry[counter].setPhoneNo(JOptionPane.showInputDialog("Enter Phone No.: "));
        entry[counter].setEmail(JOptionPane.showInputDialog("Enter E-mail: "));
        counter++;
    }
}

This is the error: Exception in thread "main" java.lang.NullPointerException at AddressBook.addEntry(AddressBook.java:57) at AddressBook.main(AddressBook.java:28) Java Result: 1 BUILD SUCCESSFUL (total time: 4 seconds)

the output only ask user to input for a name and then exit automatically... this might be a logical error... but i don't know what is the possible solution

Need Help please thanks

here's my complete code:

import javax.swing.JOptionPane;
import javax.swing.JTextArea;

public class AddressBook {

    private AddressBookEntry entry[];
    private int counter;
    private String SName;
    private int notfound = 0;

    public static void main(String[] args) {
        AddressBook a = new AddressBook();
        a.entry = new AddressBookEntry[100];
        int option = 0;
        try {
            while (option != 5) {
                String content = "Choose an Option\n\n"
                        + "[1] Add an Entry\n"
                        + "[2] Delete an Entry\n"
                        + "[3] Update an Entry\n"
                        + "[4] View all Entries\n"
                        + "[5] View Specific Entry\n"
                        + "[6] Exit";
                option = Integer.parseInt(JOptionPane.showInputDialog(content));
                switch (option) {
                    case 1:
                        a.addEntry();
                        break;
                    case 2:
                        a.deleteEntry();
                        break;
                    case 3:
                        a.editEntry();
                        break;
                    case 4:
                        a.viewAll();
                        break;
                    case 5:
                        a.searchEntry();
                        break;
                    case 6:
                        System.exit(1);
                        break;
                    default:
                        JOptionPane.showMessageDialog(null, "Invalid Choice!");
                }
            }
        } catch (NumberFormatException e) {
            JOptionPane.showMessageDialog(null, "Please Choose a Number in the displayed Menu");
        }
    }

    public void addEntry() {
        entry[counter] = new AddressBookEntry();
        SName = JOptionPane.showInputDialog("Enter name: ");
        if (entry[counter] == null &&  entry[counter].getName() == null
                && !entry[counter].getName().equals(SName)) {
            entry[counter].setName(JOptionPane.showInputDialog("Enter name: "));
            entry[counter].setAdd(JOptionPane.showInputDialog("Enter add: "));
            entry[counter].setPhoneNo(JOptionPane.showInputDialog("Enter Phone No.: "));
            entry[counter].setEmail(JOptionPane.showInputDialog("Enter E-mail: "));
            counter++;
        }
    }
    /*public void addEntry() {
    entry[counter] = new AddressBookEntry();
    entry[counter].setName(JOptionPane.showInputDialog("Enter name: "));
    entry[counter].setAdd(JOptionPane.showInputDialog("Enter add: "));
    entry[counter].setPhoneNo(JOptionPane.showInputDialog("Enter Phone No.: "));
    entry[counter].setEmail(JOptionPane.showInputDialog("Enter E-mail: "));
    counter++;
    }*/

    public void viewAll() {
        String addText = "  NAME\tADDRESS\tPHONE NO.\tE-MAIL ADD\n\n";
        int nonNull = 0;
        for (int i = 0; i < entry.length; i++) {
            if (entry[i] != null) {
                addText = addText + entry[i].getInfo() + "\n";
                nonNull++;
            }
            if (nonNull == counter) {
                break;
            }
        }
        JOptionPane.showMessageDialog(null, new JTextArea(addText));
    }

    public void searchEntry() {
        SName = JOptionPane.showInputDialog("Enter Name to find: ");
        searchMethod();
    }

    public void searchMethod() {
        for (int i = 0; i < counter; i++) {
            if (entry[i].getName().equals(SName)) {
                JOptionPane.showMessageDialog(null, entry[i].getInfo2());
                notfound = 0;
                break;
            } else {
                notfound++;
            }
        }
        if (notfound != 0) {
            JOptionPane.showMessageDialog(null, "Name Not Found!");
        }
    }

    public void editEntry() {
        SName = JOptionPane.showInputDialog("Enter Name to edit: ");
        for (int i = 0; i < counter; i++) {
            if (entry[i].getName().equals(SName)) {
                entry[i] = new AddressBookEntry();
                entry[i].setName(JOptionPane.showInputDialog("Enter new name: "));
                entry[i].setAdd(JOptionPane.showInputDialog("Enter new add: "));
                entry[i].setPhoneNo(JOptionPane.showInputDialog("Enter new Phone No.: "));
                entry[i].setEmail(JOptionPane.showInputDialog("Enter new E-mail: "));
                notfound = 0;
                break;
            } else {
                notfound++;
            }
        }
        if (notfound != 0) {
            JOptionPane.showMessageDialog(null, "Name Not Found!");
        }
    }

    public void deleteEntry() {
        SName = JOptionPane.showInputDialog("Enter Name to delete: ");
        if (SName == null) {
            return;
        }
        for (int i = 0; i < counter; i++) {
            if (entry[i] != null && SName.equals(entry[i].getName())) {
                entry[i] = null;
                JOptionPane.showMessageDialog(null, "Found!");
                break;
            }
        }
    }
}

hope you can help me... because i still dont understand what to do. So i just show my complete code... thanks for your patience guys...

like image 936
iamanapprentice Avatar asked Sep 12 '26 19:09

iamanapprentice


1 Answers

Check to make sure your entry isn't null before you try doing getName() from it.

if (!entry[counter].getName().equals(SName))

turns into:

if  (entry[counter] != null 
 &&  entry[counter].getName() != null 
 && !entry[counter].getName().equals(SName))
like image 128
corsiKa Avatar answered Sep 15 '26 08:09

corsiKa