java - 数组索引越界异常 -
问题描述
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[]
数组中。我之前将每个字符串分配给该数组的索引没有任何问题,所以我不确定是什么阻碍了它。
解决方案
推荐阅读
- javascript - JavaScript 如何计算 18 位小数的字符串值
- excel - 使用 Excel VBA 在本地 windows 文件夹中将电子邮件另存为 .msg
- python - 如何在 python 中匹配文本并制作制表符分隔表?
- javascript - Javascript querySelectorAll 数据属性值不等于
- sql - SQL:组合一张表的计数
- sass - 在伪元素的内容中使用 &
- authentication - OpenID Connect - 使用 OpenID Provider 对现有帐户系统进行身份验证
- ios - -[UINavigationController popToViewController:transition:] 中的断言失败
- javascript - 当脚本是从加载的脚本动态创建的 DOM 节点时,脚本 onload 和 window.onload 的顺序是否明确定义?
- javascript - 反应:onClick 不在 div 上呈现