2013-09-15 5 views
-2
System.out.println("Welcome to the Personal Contact Assistant!"); 
    System.out.println("How can I help you?"); 
    System.out.println("(add) (get) (quit)"); 
    String option = input.nextLine(); 
    Contact[] Contacts; 
    Contacts = new Contact[500]; 
    int index = 0; 
    boolean finished = false; 
    while(finished==false){ 
     switch (option) { 
     case "add": 
      System.out.println("You have selected add."); 
      Contact newContact = new Contact();//constructs new contact object called newContact     
      newContact.setNewInfo();//gathers input for newContact 
      System.out.println("Contact Will be Saved as:"); 
      newContact.print();//prints gathered information 
      Contacts[index] = newContact;//saves contact to array 
      index++;//advances index 
      System.out.println("Can I do something else for you? (add) (get) (quit)"); 
      option = input.nextLine(); 
      break; 
     case "get": 
      System.out.println("You have selected get."); 
      System.out.println("Enter the contact's first name:"); 
      String tempName; 
      tempName = input.nextLine(); 
      for(int i=0; i<499; i++){ 
       System.out.println(":"+i); 
       if(Contacts[i].getFirstName().equals(tempName)){ 
        System.out.println("Contact Found:"); 
        Contacts[i].print();} 
      } 

      System.out.println("Can I do something else for you? (add) (get) (quit)"); 
      option = input.nextLine(); 
      break; 

Это добавление и получение сегментов для контактного приложения, над которым я работаю. Класс My Contact содержит методы настройки и получения имени, адреса и т. Д. Контактов. Я не получаю ошибок компилятора, но во время запуска программы я получаю ошибку nullpointerexception в цикле for. кроме того, вывод будет печатать только 1 номер из System.out.println (":" + i); (что я добавил, чтобы узнать, сколько итераций цикла фактически произошло), если только он не находит контакт с этим первым именем, и в этом случае он возвращает полную контактную информацию для каждого контакта, а затем ошибки. Я просто хочу, чтобы он завершил цикл, напечатал когда-либо контакт с этим первым именем, а затем вернулся к основному внешнему циклу. Помогите?Не удается разрешить nullpointerexception

+2

Пожалуйста выкладываю * полный * StackTrace. Это похоже на то, что ваш автомобиль не запускается и шумит, не описывая, какой шум он есть. – hexafraction

+0

В этом коде нет 'for'-loop. – arshajii

+0

Вы действительно вручную добавляете 500 контактов? –

ответ

2

Если вы запустили get(), чтобы вручную добавить 500 контактов, линия ghis будет бросать, когда я превысит количество добавленных вами контактов, так как мы переходим к 499 независимо от того, сколько вы добавили.

 if(Contacts[i].getFirstName().equals(tempName)){ 

Даже если он находит тот, который вы ищете, он будет продолжать через 499. Есть несколько способов, чтобы это исправить.

  1. Если ожидается, что вы всегда найдете его, остановитесь, когда найдете его.

  2. Изменение цикла к:

    для (I = 0; я < индекс; я ++)

  3. использовать ArrayList или другой класс коллекции, которая управляет размер для вас. Тогда ваш поиск может стать:

    для (Контакт контакт: Контакты) {

+0

Отлично. Я изменил цикл, чтобы индексировать итерации, и теперь моя программа работает отлично. спасибо – Rekul

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