我正在创建一个程序,该程序使用数组来保存对Contact类型的多个对象的引用。我想使用用户输入来允许用户设置新创建的Contact对象的名称和phoneNumbber值。我该怎么做呢?
import java.io.* ;
import java.util.*;
public class Contact {
public static int count ;
public String name ;
public int phoneNumber ;
public Contact(String name , int phoneNumber) {
count++ ;
this.name = name ;
this.phoneNumber = phoneNumber ;
}
public String getName() {
return this.name;
}
public int getNumber() {
return this.phoneNumber;
}
public static void main (String args[]) {
Scanner input = new Scanner(System.in);
Contact[] list = new Contact[4] ;
list[0] = new Contact("Philly",5550) ;
list[1] = new Contact("Becky",6330) ;
list[2] = new Contact("Rufio",4456) ;
System.out.println("There are " + count + " contacts");
for( int i = 0 ; i<3 ; i++ ) {
System.out.println(list[i].getName()) ;
System.out.println(list[i].getNumber()) ;
System.out.println("---") ;
System.out.println("Would you like to add another? Yes/No");
String answer = input.next() ;
if( answer = "No" ) {
System.out.println("Goodbye.") ;
}
else {
System.out.println(" Sure, what is the new contacts name?");
String newName = input.next();
newContact.name = newName ;
System.out.println("and the number?");
int newNumber = input.nextInt();
newContact.phoneNumber = newNumber ;
}
Contact newContact = new Contact() ;
list[3] = newContact ;
for( int j = 0 ; j<=3 ; j++ ) {
System.out.println(list[j].getName()) ;
System.out.println(list[j].getNumber()) ;
System.out.println("---") ;
}
}
}
}
答案 0 :(得分:0)
通常,如果要创建具有特定值的新对象,则使用构造函数方法。我首先将您的main方法移动到一个单独的类,然后使用如下代码:
Scanner input = new Scanner(System.in);
System.out.println("Enter the name of the contact");
String name = input.next();
System.out.println("Enter the phone number");
int num = input.nextInt();
list[3] = new Contact(name, num);
我建议使用ArrayList而不是数组,因为ArrayList可以处理更多条目并根据需要进行扩展,因此您在添加元素时不必担心确切的数组大小。
答案 1 :(得分:0)
这样做......我还建议将你的成员改为私人使用适当的封装,因为你已经创建了getter,所以不需要公开成员。如果您在任何时候需要在构造函数之外设置值,请为私有成员变量创建setter。
if( answer.equals("No") ) { // Need to use .equals instead of = in Java
System.out.println("Goodbye.") ;
} else {
System.out.println(" Sure, what is the new contacts name?");
String newName = input.next();
System.out.println("and the number?");
int newNumber = input.nextInt();
Contact newContact = new Contact(newName, newNumber) ;
list[3] = newContact ;
}
for( int j = 0 ; j<=3 ; j++ ) {
if(list[j] != null) { // because you're using a fixed number, make sure the value isn't null
System.out.println(list[j].getName()) ;
System.out.println(list[j].getNumber()) ;
System.out.println("---") ;
}
}