I have a Phone class that has only one field: an ArrayList of instances of the Contact class. The Contact class has only two fields: name and number.
 When you run the program,
- It displays numbered instructions
- You enter a number
- It calls the function the performs the corresponding action using a switch statement, like so:
    switch (num) {
        case 0:
            printInstructions();
            break;
        case 1:
            addContact();
            break;
    }
The switch statement is in a while loop.
I've put the code to prompt the user for information (like a name) inside the functions:
    public static void addContact() {
        System.out.print("Name: ");
        String name = scanner.nextLine();
        scanner.nextLine();
    
        System.out.print("Number: ");
        String number = scanner.nextLine();
        phone.addContact(name, number);
    }
phone.addContact():
    public void addContact(String name, String number) {
        //there is a check to make sure the contact doesn't already exist
        contacts.add(new Contact(name, number));
    }
My problem: I can't get it to save the name I enter. The value of name stays an empty string no matter what I enter.
What's stranger is that the number is saved correctly. Why is this happening?
Edit: Also, It works fine if I get rid of the loop and the switch statement and the function and run the code directly in main().
(Is there any other code I should share?)
I was asked to include the Contact class, so —
    public class Contact {
        private String name;
        private String number;
    
        public Contact(String name, String number) {
            this.name = name;
            this.number = number;
            System.out.println("Contact created with name " + name + " and number " + number);
        }
    
        public Contact(String name) {
            this(name, null);
        }
    
        public Contact() {
            this("J. Doe", null);
            System.out.println("ERROR: blank contact somehow generated");
        }
    
        public String getName() {
            return name;
        }
    
        public String getNumber() {
            return number;
        }
    
        @Override
        public String toString() {
            return "Contact { \n" +
                    "    name = \"" + name + "\",\n" +
                    "    number = \"" + number + "\"" +
                    "\n}";
        }
    }
And the while loop:
    while (true) {
                System.out.print("Enter an instruction number: ");
                num = phoneScnr.nextInt();
                switch (num) {
                    case 0:
                        printInstructions();
                        break;
                    case 1:
                        addContact();
                        break;
                    case 2:
                        editContact();
                        break;
                    case 3:
                        removeContact();
                        break;
                    case 4:
                        findContact();
                        break;
                    case 5:
                        listContacts();
                        break;
                    case -1:
                        quit = true;
                        break;
                    default:
                        System.out.println("Sorry, that character is not recognized.");
                        break;
                }
            }
 
    