2016-02-15 31 views
3

我有一个PersonalContact类和一个BusinessContact类设置,我想使用此驱动程序来提示用户联系信息。一旦输入信息,我想使用这些类来打印他们的toStrings来显示联系信息。我认为我需要创建一个新的PersonalContact或BusinessContact对象吗?基类叫做Contact,是一个抽象类。允许用户创建业务或个人联系的代码

import java.util.Scanner; 

public class PlannerMain { 
    static Scanner scanner = new Scanner(System.in); 

    public static void main(String[] args) { 

     while (true) { 

      System.out.println("Create new contact?"); 
      System.out.println("1.Personal contact "); 
      System.out.println("2.Business Contact "); 
      System.out.println("3.Exit."); 

      int option = scanner.nextInt(); 

      if (option == 1) { //Create Personal Contact 

       System.out.println("Name?"); 
       String name = scanner.next(); 

       System.out.println("Age?"); 
       int age = scanner.nextInt(); 

       System.out.println("Address?"); 
       String address = scanner.next(); 

       System.out.println("City?"); 
       String city = scanner.next(); 

       System.out.println("State?"); 
       String state = scanner.next(); 

       System.out.println("Zip"); 
       String zip = scanner.next(); 

       PersonalContact pc = new PersonalContact; 

      } // End option 1 

      else if (option == 2) { // Create Business Contact 

       System.out.println("Name?"); 
       String name = scanner.next(); 

       System.out.println("Age?"); 
       int age = scanner.nextInt(); 

       System.out.println("Business Phone?"); 
       String businessPhone = scanner.next(); 

       System.out.println("Cellphone?"); 
       String cellPhone = scanner.next(); 

       BusinessContact bc = new BusinessContact; 

      } // End option 2 

      else if (option == 3) { /** Terminates the program */ 
       System.exit(0); 
      } // End option 3 
     } // End while 

    }// End void main 

}// End 
+0

PersonalContact,BusinessContact类需要一个构造函数。您可以将姓名,年龄等传递给该构造函数以进行联系。 –

回答

2

如果你的Person类是这样的:

public abstract class Contact{ 
    String name; 
    int age; 

    public Contact(String name, int age){ 
     this.name = name; 
     this.age = age; 
    } 
} 

那么你BusinessContact看起来是这样的

public class BusinessContact extends Contact { 
    String businessPhone; 
    String cellPhone; 

    public BusinessContact(String name, int age, String businessPhone, String cellPhone){ 
     super(name, age); 
     this.businessPhone = businessPhone; 
     this.cellPhone = cellPhone; 
    } 

    public String toString(){ 
     return "Name: " + this.name + " Age: " + Integer.toString(age) + " Business Phone: " + businessPhone + " Cell Phone: " + cellphone; 
    } 
} 

,那么你可以替换此行:

BusinessContact bc = new BusinessContact; 

与这个:

BusinessContact bc = new BusinessContact(name, age, businessPhone, cellPhone); 

System.out.println(bc.toString()); 
+0

谢谢,我很感激。你能否告诉我在哪里可以放置try-catch块来处理不好的用户输入?我的PersonalContact和BusinessContact类有验证方法来抛出异常,但我认为我需要驱动程序中的try-catch块吗? – Chap

+0

这是一个好主意。你可以把'while'循环中的所有内容放入try-catch块,然后用'System.out.println(“An Error Occurred ...”);'catch(Exception ex)'。这是快速和肮脏,你也应该[看到这个处理扫描仪错误的答案]。(http://stackoverflow.com/questions/3572160/how-to-handle-invalid-input-using-scanner-and-try-catch -currently具备-AN-infin#3572233)。然后,您可以通过添加一个更具体的catch(InputMismatchException ime)来改进它,如果您需要更具体的反馈,则需要将每个读取用户输入的语句包装在try-catch – nlloyd

相关问题