【发布时间】:2020-08-26 20:16:43
【问题描述】:
import java.util.Scanner;
public class PhoneBook {
private Address[] addresses;
private String[] phoneNumbers;
private Person[] people;
public static void startMenu() {
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
Scanner intScan = new Scanner(System.in);
String menu = ("Please Make A selection Below: \n1 - Add new Record"
+ " \n2 - Delete Record "
+ "\n3 - Find Record By Telephone Number "
+ "\n4 - Find Record By First Name "
+ "\n5 - Find Record By Last Name"
+ "\n6 - Update a Record"
+ "\n7 - Exit");
int selection;
String inputString;
do {
System.out.println(menu);
selection = intScan.nextInt();
Entry[] entry5 = new Entry[0];
Entry tempEntry = null;
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");
inputString = input.nextLine();
// creating a new obj ref variable
tempEntry = new Entry(inputString);
// calling the method on the obj ref variable
tempEntry.addEntry(inputString);
System.out.println(tempEntry.toString());
System.out.println(menu);
break;
case 2:
// method to remove record
break;
case 3:
// method
break;
case 4:
break;
case 5:
break;
case 6:
break;
case 7:
break;
}
} while (selection != 11);
}
}
我试图弄清楚为什么当我将对象引用变量设置为等于新条目时我的对象没有创建。我还为 tempEntry 对象引用变量调用 .addEntry 方法并传入扫描仪输入但没有成功。我只是将'null null null'打印到控制台。但它不会让我输入参数。
tempEntry = new Entry();
tempEntry.addEntry(inputString);
我还尝试在传入新记录时将 1 添加到 Entry[] 数组,但似乎也找不到解决方法。 我不知道我应该把:
tempEntry = new Entry(inputString);
和
Entry[] entry5 = new Entry[0];
但是,我一直在移动它们并运行代码。有什么想法吗?这是我的条目类中的添加条目方法:
import java.util.Scanner;
public class Entry {
private Name newName;
private Address address;
private Phone phone;
public String string;
public Entry(Name newName, Address address, Phone phone) {
this.newName = newName;
this.address = address;
this.phone = phone;
}
public Entry(String string) {
this.string = string;
}
public Entry() {
}
public Name getName() {
return this.newName;
}
public Address getAddress() {
return this.address;
}
public Phone getPhone() {
return this.phone;
}
public void setName(Name newName) {
this.newName = newName;
}
public void setAddress(Address address) {
this.address = address;
}
public void setPhone(Phone phone) {
this.phone = phone;
}
**// add entry method
public Entry addEntry(String input) {
String name, street, city, state, zipCode, phoneNumber;
name = "";
street = "";
city = "";
state = "";
zipCode = "";
phoneNumber = "";
String[] arr = input.split(",");
name = arr[0];
street = arr[1].trim();
city = arr[2].trim();
state = arr[3].trim();
zipCode = arr[4].trim();
phoneNumber = arr[5].trim();
Name fullName = splitName(name);
Address address = makeAddress(street, city, state, zipCode);
Phone phoneNum = makePhone(phoneNumber);
Entry entry1 = new Entry(fullName, address, phoneNum);
return entry1;
}**
// split name method
public static Name splitName(String name) {
String fName, mName, lName;
fName = "";
mName = "";
mName = "";
String [] names = name.split(" ");
fName = names[0];
for (int i = 1; i < names.length - 1; i++) {
mName += names[i];
if (i != names.length - 1) {
mName += " ";
}
}
lName = names[names.length - 1];
Name name1 = new Name(fName, mName, lName);
return name1;
}
// Address method
public static Address makeAddress(String street, String city, String state, String zipCode) {
Address address1 = new Address(street, city, state, zipCode);
return address1;
}
// Phone method
public static Phone makePhone(String phoneNumber) {
String area, prefix, line;
area = phoneNumber.substring(0, 3);
prefix = phoneNumber.substring(3, 6);
line = phoneNumber.substring(6);
Phone phone1 = new Phone(area, prefix, line);
return phone1;
}
@Override
public String toString() {
return this.newName + " " + this.address + " " + this.phone;
}
}
【问题讨论】:
-
您可以删除
addEntry()函数,并将该函数中的所有代码移至Entry(String string)构造函数。除了最后两行。删除那些。 -
@JohnnyMopp 所以 - 我将如何利用那里的一切?我会创建一个新对象并调用该构造函数吗?条目条目 = 新条目(输入字符串)?另外,我是否需要删除其他任何内容才能将其粘贴到该构造函数中?我只是对它的外观感到困惑。感谢您的帮助。