Comment résoudre ce problème avec Java dans mon code

la programmation


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

Ce que j’ai essayé :

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();
       

    }
}

Solution 1

C’est l’un des problèmes les plus fréquemment posés, et c’est aussi celui auquel nous sommes le moins équipés pour répondre, mais vous êtes le mieux équipé pour y répondre vous-même.

Laissez-moi simplement vous expliquer ce que signifie l’erreur : vous avez essayé d’utiliser une valeur de retour de variable, de propriété ou de méthode, mais elle contient null, ce qui signifie qu’il n’y a aucune instance de classe dans la variable.
C’est un peu comme une poche : vous avez une poche dans votre chemise, qui vous sert à ranger un stylo. Si vous fouillez dans la poche et constatez qu’il n’y a pas de stylo, vous ne pouvez pas signer votre nom sur un morceau de papier – et vous obtiendrez des regards très drôles si vous essayez ! La poche vide vous donne une valeur nulle (pas de stylo ici !), vous ne pouvez donc rien faire de ce que vous feriez normalement une fois que vous avez récupéré votre stylo. Pourquoi est-il vide ? C’est la question : il se peut que vous ayez oublié de prendre votre stylo en quittant la maison ce matin, ou peut-être que vous ayez laissé le stylo dans la poche de votre chemise d’hier lorsque vous l’avez enlevé hier soir.

Nous ne pouvons pas le savoir, car nous n’étions pas là, et plus important encore, nous ne pouvons même pas voir votre chemise, encore moins ce qu’il y a dans la poche !

Revenons aux ordinateurs, et vous avez fait la même chose, d’une manière ou d’une autre – et nous ne pouvons pas voir votre code, et encore moins l’exécuter et découvrir ce qui contient null alors qu’il ne devrait pas.
Mais vous pouvez le faire – et votre IDE vous aidera ici. Exécutez votre programme dans le débogueur et en cas d’échec, il vous montrera la ligne sur laquelle il a trouvé le problème. Vous pouvez ensuite commencer à en examiner les différentes parties pour voir quelle valeur est nulle et commencer à parcourir votre code pour découvrir pourquoi. Mettez donc un point d’arrêt au début de la méthode contenant la ligne d’erreur et exécutez à nouveau votre programme depuis le début. Cette fois, le débogueur s’arrêtera avant l’erreur et vous permettra d’examiner ce qui se passe en parcourant le code en examinant vos valeurs.

Mais nous ne pouvons pas faire cela – nous n’avons pas votre code, nous ne savons pas comment l’utiliser si nous l’avions, nous n’avons pas vos données. Alors essayez-le – et voyez combien d’informations vous pouvez trouver !

Solution 2

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

コメント

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