2016-02-07 3 views
0

У меня есть 3 варианта этого кода, и мои другие классы настроены правильно, насколько я могу судить , Варианты 1 и 3, похоже, работают нормально, но с опцией 2 я хочу, чтобы он печатал количество контактов (которые он уже делает), печатайте количество контактов каждого типа, например «Личный» или «Бизнес», а затем печатайте средний возраст всех контакты. Я не могу понять, как получить средний возраст или как печатать каждый тип.Код с набором параметров для печати списка контактов, количества контактов, среднего возраста контактов и количества контактов каждого типа

импорт java.util.Scanner;

общественный класс PlannerMain { статический сканер сканера = новый сканер (System.in);

public static void main(String[] args) { 

    Contact[] contacts = new Contact[6]; 
    contacts[0] = new PersonalContact("Joe Smith, ", 33, ", 100 Evergreen Ave, ", "Seattle,", "WA ", 98999); // Personal 
    contacts[1] = new PersonalContact("Lawrence Williams, ", 45, ", 2000 1st St, ", "Tacoma,", "WA ", 98100); // Personal 
    contacts[2] = new PersonalContact("Rachel Garcia, ", 12, ", 12 Forest Drive, ", "Los Angelos,", "CA ", 99301); // Personal 
    contacts[3] = new BusinessContact("Gregory Smith, ", 67, ", 360-888-7777", " 360-555-6666"); // Business 
    contacts[4] = new BusinessContact("Jerome Bradley, ", 18, ", 216-111-2222", " 253-444-7777"); // Business 
    contacts[5] = new BusinessContact("Susie Adams, ", 23, ", 253-333-7777", " 425-666-9999"); // Business 

    while (true) { 

     System.out.println("1.Print planner contacts. "); 
     System.out.println("2.Print planner statistics. "); 
     System.out.println("3.Exit."); 

     int option = scanner.nextInt(); 

     if (option == 1) { // Displays every contact in the list until the length of the list has been reached 

      for (int i = 0; i < contacts.length; i++) { 
       System.out.println(contacts[i]); 

      } // End for 
     } // End option 1 

     else if (option == 2) { 
      int sum = 0; 
      System.out.println("Number of contacts: " + contacts.length); 

      for (int i = 0; i < contacts.length; i++){ 
       sum += contacts[i]; 
       } 
      System.out.println("Average age: " + (sum/contacts.length)); 

       if(contacts[] instanceof PersonalContact){    
       for (int i = 0; i < PersonalContact.getLength(); i++){ 
        System.out.println("Personal Contacts: " + personalContacts.length); 
       }// End for PC 
       }//End if PC 

       if(contacts[] instanceof BusinessContact){    
       for (int i = 0; i < BusinessContact.getLength(); i++){ 
        System.out.println("BusinessContacts: " + businessContacts.length); 
       }// End for BC 
       }//End if BC 

     } // End option 2 

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


}// End void main 

} // Конец

ответ

1

Чтобы получить средний возраст в настоящее время вы используете переменную сумму и пытаетесь добавить контакты [я] к нему для каждого контакта в списке контактов. То, что вы на самом деле хотите, чтобы добавить возраст каждого контакта на сумму, используя что-то вроде

sum += contacts[i].getAge() 

или

sum += contacts[i].age 

в зависимости от того, как реализован класс Contact.

Чтобы получить количество PersonalContacts и коммерческие связи вы можете сделать что-то вроде:

int personalContactsCount = 0; 
for (int i = 0; i < contacts.length; i++) { 
    if (contacts[i] instanceof PersonalContact) { 
     personalContactsCount++; 
    } 
} 
int businessContactsCount = contacts.length - personalContactsCount;  
+0

Спасибо @Spencer, что очистили его для меня. Кажется, сейчас просто, хаха – Chap

Смежные вопросы