2015-04-27 100 views
0

我正在創建一個程序,該程序使用數組來保存對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

調用數組變量「list」可能不明智;) – alfasin

回答

0

通常情況下,如果要使用特定值創建新對象,請使用構造函數方法。

 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中可以處理更多的條目,擴大:我會通過移動你的主要方法,一個單獨的類,然後使用一個代碼,例如啓動在添加元素時不必擔心確切的數組大小。

0

這將做到這一點...我也建議改變你的成員爲私人使用適當的封裝,並且既然你已經創建了getters,沒有必要公開成員。如果在任何時候需要在構造函數外設置值,請爲私有成員變量創建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("---") ; 
    } 
}