如何将实例变量设置为用户输入的值

时间:2015-04-27 00:37:36

标签: java object instance

我正在创建一个程序,该程序使用数组来保存对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("---") ;
     }

}
}
}

2 个答案:

答案 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("---") ;
    }
}