如何解决通过扫描仪输入创建对象
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);
}
}
当我将对象引用变量设置为新的Entry时,我试图弄清楚为什么我的对象没有创建。我还为tempEntry对象引用变量调用.addEntry方法,并成功传递了扫描器输入。我只是将'null null null'打印到控制台。但这不会让我输入参数。
tempEntry = new Entry();
tempEntry.addEntry(inputString);
我还试图在传入新记录时向Entry []数组添加1,但似乎也找不到解决办法。 我不确定应该在哪里放置
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,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,lName);
return name1;
}
// Address method
public static Address makeAddress(String street,String city,String state,String zipCode) {
Address address1 = new Address(street,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,line);
return phone1;
}
@Override
public String toString() {
return this.newName + " " + this.address + " " + this.phone;
}
}
解决方法
您可以删除addEntry()
函数,并获取该函数中的所有代码,然后将其移至Entry(String string)
构造函数中。除了最后两行。只需删除那些。
public Entry(String input)
{
String[] arr = input.split(",");
if (arr.length < 6) {
throw new IllegalArgumentException();
}
newName = splitName(arr[0]);
address = makeAddress(arr[1].trim(),arr[2].trim(),arr[3].trim(),arr[4].trim());
phone = makePhone(arr[5].trim());
}
然后在主代码中:
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();
tempEntry = new Entry(inputString);
System.out.println(tempEntry.toString());
System.out.println(menu);
break;
请注意,这不会向数组添加任何内容。如果要先执行此操作,则必须正确声明数组并设置正确的索引:
//Entry[] entry5 = new Entry[0]; <- creates a zero-length array
Entry[] entry5 = new Entry[5]; // creates array with room for 5 items
int index = 0; // Where to add the next item
....
case 1:
System.out.println("Please enter a new record as John Michael West Doe,3142752000");
inputString = input.nextLine();
entry5[index] = new Entry(inputString);
System.out.println(entry5[index].toString());
index += 1;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。