首页 > 解决方案 > 数组索引越界异常 -

问题描述

import java.util.Scanner;

public class PhoneBook {
    
    private Address[] addresses;
    private String[] phoneNumbers;
    private Person[] people;
    public static String menu = ("Please Make A selection Below: \n1 - Add new Record"
            + " \n2 - Delete Record \n3 - Find Record By First Name "
            + "\n3 - Find Record By Telephone Number "
            + "\n4 - Find Record By First Name "
            + "\n5 - Find Record By Last Name"
            + "\n6 - Update a Record"
            + "\n7 - Exit");
    

    public static void main(String[] args) {
        
        Scanner scanner = new Scanner(System.in);
                    
            // printing menu 
                System.out.println(menu);
                boolean quit = false;
                int selection;
                do {
                // next user input (of integer type) will be stored in the variable selection
                selection = Integer.parseInt(scanner.next());
                switch (selection) {
                case 1:
                    System.out.println("Please enter a new record as John Michael West Doe, 574 Pole ave, St. Peter, MO, 63303, 3142752000");
    
                    // method to add that input to a Person Object
                        
                        String input = scanner.nextLine();
                        Entry entry = addEntry(input);
                        
    
                    break; 
                case 2: 
                    // method to delete record - remove 
                    break;
                case 3:
                    // search by telephone number
                    break;
                case 4: 
                    // find record by first name
                    break;
                case 5: 
                    // find record by last name
                    break;
                case 6: 
                    // update a record 
                    break;
                case 7:
                    quit = true;
                    break;
                default:
                    System.out.println("Invalid");
                    
                    
                }
                
                } while(selection != 7);
}
    

    
    public static Entry addEntry(String input) {
        String[] inputs = input.split(",");
        String name, street, city, state, zipCode, phoneNumber;
        
        name = "";
        street = "";
        city = "";
        state = "";
        zipCode = "";
        phoneNumber = "";
        
        name = inputs[0];
        street = inputs[1].trim();
        city = inputs[2].trim();
        state = inputs[3].trim();
        zipCode = inputs[4].trim();
        phoneNumber = inputs[5].trim();
        
        Name newName = createName(name);
        Address address = createAddress(street, city, state, zipCode);
        Phone phone = createPhone(phoneNumber);
        
        Entry entry = new Entry(newName, address, phone);
        return entry;   
    }
    
    // method to create name based off the first 3 words from the scanner
    
    public static Name createName(String name) {
        String fName, mName, lName;
        fName = "";
        mName = "";
        lName = "";
        
        String[] names = name.split(" ");
        
        if (names.length == 3) {
            fName = names[0];
            mName = names[1];
            lName = names[2];
        }
        
        if (names.length == 4) {
            fName = names[0];
            mName = names[1] + " " + names[2];
            lName = names[4];
        }
        
        Name name1 = new Name(fName, mName, lName);
        return name1;
    }
    
    // method to create address 
    
    public static Address createAddress(String street, String city, String state, String zipCode) {
        Address address1 = new Address(street, city, state, zipCode);
        return address1;
    }
    
    // method to create a phone based off the user input
    public static Phone createPhone(String input) {
        String area, prefix, line;
        
        area = input.substring(0, 3);
        prefix = input.substring(3, 6);
        line = input.substring(6);
        
        Phone phone1 = new Phone(area, prefix, line);
        return phone1;
    }
}

我试图弄清楚为什么我不断收到“索引越界”异常。我正在处理案例 1。

Entry entry = addEntry(input); 

addEntry方法似乎是罪魁祸首,但我不知道为什么。我将输入拆分并将其存储在inputs[]数组中。我之前将每个字符串分配给该数组的索引没有任何问题,所以我不确定是什么阻碍了它。

标签: javaindexoutofboundsexception

解决方案


推荐阅读