Bagaimana cara memperbaiki masalah ini dengan Java di kode saya

pemrograman


I'm currently running into a nullPointerException when I try to search the address book. Also, running into an issue printing the contents of the ArrayList addressbook. Any tips on how I can clean up the code // split it up into different files, would appreciate that feedback

Apa yang saya coba:

import java.util.*;

public class addressBook {

    private String firstName;
    private String lastName;
    private String phoneNumber;
    private String email;
    static Scanner input = new Scanner(System.in);

    public void addressBookEntry(String firstName, String lastName, String phoneNumber, String email){
        this.firstName = firstName;
        this.lastName = lastName;
        this.phoneNumber = phoneNumber;
        this.email = email;
    }

    public String getFirstName() {
	    return firstName;
	}

	public void setFirstName(String firstName) {
	    this.firstName = firstName;
	}

	public String getLastName() {
	    return lastName;
	}

	public void setLastName(String lastName) {
	    this.lastName = lastName;
	}

	public String getPhoneNumber() {
	    return phoneNumber;
	}

	public void setPhone(String phoneNumber) {
	    this.phoneNumber = phoneNumber;
	}

	public String getEmail() {
	    return email;
	}

	public void setEmail(String email) {
	    this.email = email;
	}

    // Create an arraylist of entry objects
    static ArrayList<addressBookEntry> Book = new ArrayList<addressBookEntry>();

    // public void addressBookEntry(){
    //     System.out.println("This is the display method of superclass addressBookEntry");
    // }

    // Main menu for address book
    public static void printMenu(){
        
        int choice;

        System.out.println("1) Add an entry\n" +
                            "2) Remove an entry\n" +
                            "3) Search for a specific entry\n" +
                            "4) Print Address Book\n" +
                            "5) Delete Book\n" +
                            "6) Quit\n"+
                            "Please choose what you'd like to do with the database: ");

        // Assign choice variable to user input 
        choice = input.nextInt();
        if (choice == 1){
            addEntry();
        }
            else if (choice == 2){
                removeEntry();
            }
            else if (choice == 3){
                searchBook();
            }
            else if (choice == 4){
                printBook();
            }
            else if (choice == 5){
                deleteBook();
            }
            else if (choice == 6){
                quitBook();
            }
        //     // If choice != ints 1-6, reset and ask user for choice again.
            else {
                System.out.println("Invalid entry! Please try again.");
                printMenu();
            }
    }

    // Allows user to add an entry
    public static void addEntry(){
       Scanner entry = new Scanner(System.in);
            System.out.println("Please enter the following:");
                System.out.println("First Name: ");
                String firstName = entry.nextLine();
                System.out.println("Last Name: ");
                String lastName = entry.nextLine();
                System.out.println("Phone number: ");
                String phoneNumber = entry.nextLine();
                System.out.println("Email address: ");
                String email = entry.nextLine();
            
            Book.add(new addressBookEntry(firstName, lastName, phoneNumber, email));
        

        System.out.println("\nAdded new entry!\n");
        printMenu();
        
    }

    // Allows user to remove an entry
    public static void removeEntry(){
        Scanner removeEmail = new Scanner(System.in);
        System.out.println("Enter an entry's email to remove");
        String remove = removeEmail.nextLine();
        for (int i = 0; i<Book.size(); i++){
            if (Book.get(i).getEmail() == remove){
                System.out.println("Deleted the following entry:");
                System.out.println("****************************");
                System.out.println(Book.get(i));
                System.out.println("****************************");
                Book.remove(i);
            }
        }
        printMenu();
    }

    // // Allows user to search for an entry
    public static void searchBook(){
        
        System.out.println("Search address book: \n");
        System.out.println("1) First Name\n" +
                            "2) Last Name\n" +
                            "3) Phone Number\n" +
                            "4) Email Address\n" +
                            "Choose a search type: \n");
        int choice = input.nextInt();
        if (choice == 1){
            System.out.println("Please enter First Name: \n");
            String firstName = input.nextLine();
            for (int i = 0; i < Book.size(); i++) {
                if (Book.get(i).getFirstName().equals(firstName)) {
                    System.out.println(Book.get(i));
                    printMenu();
                }
            }
        }
            else if (choice == 2){
                System.out.println("Please enter Last Name: \n");
                String lastName = input.nextLine();
                for (int i = 0; i < Book.size(); i++) {
                    if (Book.get(i).getLastName().equals(lastName)) {
                        System.out.println(Book.get(i));
                        printMenu();
                    }
                }
            }
            else if (choice == 3){
                System.out.println("Please enter phone number: \n");
                String phone = input.nextLine();
                for (int i = 0; i < Book.size(); i++) {
                    if (Book.get(i).getPhoneNumber().equals(phone)) {
                        System.out.println(Book.get(i));
                        printMenu();
                    }
                }
            }
            else if (choice == 4){
                System.out.println("Please enter email: \n");
                String email = input.nextLine();
                for (int i = 0; i < Book.size(); i++) {
                    if (Book.get(i).getEmail().equals(email)) {
                        System.out.println(Book.get(i));
                        printMenu();
                    }
                }
            }
        
    }

    // Print out all entries in address book
    public static void printBook(){
      
        if(Book.size() == 0){
            System.out.println("Address book is empty!\n");
            printMenu();
        }
        for(int i = 0; i<Book.size(); i++){
            System.out.println("****************************");
            addressBookEntry curr = Book.get(i);
            System.out.println(curr.toString());
            System.out.println("****************************");
        }
        printMenu();
    }

    // // Remove all entries in address book
    public static void deleteBook(){
        Book.clear();
        System.out.println("Address book cleared!\n");
        printMenu();
    }

    // // Allows user to quit program
    public static void quitBook(){
        System.out.println("Quit book");
    }

    public static void main (String[] args){

        printMenu();
       

    }
}

Solusi 1

Ini adalah salah satu masalah paling umum yang ditanyakan kepada kami, dan juga merupakan masalah yang paling tidak mampu kami jawab, namun Anda sendiri yang paling siap untuk menjawabnya.

Izinkan saya menjelaskan apa arti kesalahannya: Anda telah mencoba menggunakan variabel, properti, atau metode yang mengembalikan nilai tetapi berisi null – yang berarti tidak ada turunan kelas dalam variabel.
Ini seperti sebuah saku: Anda memiliki sebuah saku di baju Anda, yang Anda gunakan untuk menyimpan pena. Jika Anda merogoh saku dan menemukan tidak ada pena di sana, Anda tidak dapat menandatangani nama Anda di selembar kertas – dan Anda akan terlihat sangat lucu jika mencobanya! Kantong kosong memberi Anda nilai nol (tidak ada pena di sini!) Jadi Anda tidak dapat melakukan apa pun yang biasa Anda lakukan setelah mengambil pena. Mengapa kosong? Itu pertanyaannya – mungkin Anda lupa mengambil pulpen saat keluar rumah pagi ini, atau mungkin Anda meninggalkan pulpen di saku baju kemarin saat Anda melepasnya tadi malam.

Kami tidak tahu, karena kami tidak ada di sana, dan yang lebih penting lagi, kami bahkan tidak bisa melihat baju Anda, apalagi apa yang ada di dalam saku!

Kembali ke komputer, dan Anda telah melakukan hal yang sama, entah bagaimana – dan kami tidak dapat melihat kode Anda, apalagi menjalankannya dan mencari tahu apa yang berisi null padahal seharusnya tidak.
Tapi Anda bisa – dan IDE Anda akan membantu Anda di sini. Jalankan program Anda di debugger dan ketika gagal, program tersebut akan menunjukkan kepada Anda baris dimana masalahnya ditemukan. Anda kemudian dapat mulai melihat berbagai bagiannya untuk melihat nilai apa yang nol dan mulai melihat kembali kode Anda untuk mencari tahu alasannya. Jadi letakkan breakpoint di awal metode yang berisi baris kesalahan, dan jalankan kembali program Anda dari awal. Kali ini, debugger akan berhenti sebelum kesalahan terjadi, dan membiarkan Anda memeriksa apa yang terjadi dengan menelusuri kode dan melihat nilai-nilai Anda.

Namun kami tidak dapat melakukan itu – kami tidak memiliki kode Anda, kami tidak tahu cara menggunakannya, jika kami memilikinya, kami tidak memiliki data Anda. Jadi cobalah – dan lihat berapa banyak informasi yang dapat Anda temukan!

Solusi 2

https://Www.semfirms.com/goto?url=https://halloween-pumpkin.blogspot.com/2023/11/Romantic-Pumpkin-Carving-Ideas.html

コメント

タイトルとURLをコピーしました