Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> NullPointerException, Запись данных в коллекцию 
V
    Опции темы
ЛунныйОборотень
Дата 4.11.2010, 19:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 12.11.2006

Репутация: 1
Всего: 1



Здравствуйте!

Написал программку для ввода данных людей с консоли.

Код

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */



import java.util.ArrayList;
import java.util.Collection;
import java.util.Scanner;

/**
 *
 * @author Simplevolk
 */
public class lab {

    /**
     * @param args the command line arguments
     */
   private static ArrayList<People> peoples;
   // Для шаблона Singletone статическая переменная
    private static lab instance;


    // метод getInstance - проверяtт, инициализирована ли статическая
    // переменная (в случае надобности делает это) и возвращает ее
    public static synchronized lab getInstance() {
        if (instance == null) {
            instance = new lab();
        }
        return instance;
    }



    public ArrayList<People> getPeoples()
    {
    return peoples;
    }
    public void insertPeople(People people)
    {
    peoples.add(people);
    }
    public void deletePeople(People people)

    {
    peoples.remove(people);
    }
    public static void main(String[] args) {
        // TODO code application logic here
      
      int flag=0;
     lab ms=lab.getInstance();
    People p=null;
    
     Scanner input= new Scanner(System.in);
     String str;
      while(flag==0)
      {
       p=new People();

    //  System.out.println("Vvedite ID: ");
    //  str=input.next();
    //  p.setPeopleId(Integer.parseInt(str));

       System.out.println("Vvedite Familiy:");
        
        str=input.next();
        p.setSurName(str);
        
        System.out.println("Vvedite Imia: ");
       
        str=input.next();
        p.setFirstName(str);

        System.out.println("Vvedite Otchestvo: ");
        str=input.next();
        p.setPatronymic(str);
        
        System.out.println("Vvedite pol: ");
        str=input.next();
        p.setSex(str);

        System.out.println("Vvedite Daty:");
        str=input.next();
        p.setDateOfBirth(str);

        System.out.println("Vvedite telefon: ");
        str=input.next();
        p.setTelefone(str);

        System.out.println("Vvedite Mesto: ");
        str=input.next();
        p.setPlace(str);

       peoples.add(p);

        System.out.println("Zakonchit vvod? Yes=1;No=0");
        
         str=input.next();
         flag=Integer.parseInt(str);

        }
     
    System.out.println("Vyvod dannyx: ");
    
        System.out.println(ms.getPeoples());
       
    }

}



Код


import java.text.DateFormat;
import java.util.ArrayList;
import java.util.Date;

/**
 *
 * @author Simplevolk
 */
public class People implements Comparable {

//    private int peopleId;

    // поле ИМЯ
    private String firstName;
    // поле ФАМИЛИЯ
    private String surName;

    // поле ОТЧЕСТВО
    private String patronymic;
    // поле ДАТА РОЖДЕНИЯ
    private String dateOfBirth;
    // поле ПОЛ
    private String sex;
    // телефон
    private String telefone;
    // место встречи
    private String place;


    public String getTelefone()
    {
    return telefone;
    }
    public void setTelefone(String telefon)
    {

    this.telefone=telefon;
    }
    public String getPlace()
    {
    return place;

    }
    public void setPlace(String myplace)
    {
    this.place=myplace;
    }
    public String getDateOfBirth() {
        return dateOfBirth;
    }

    public void setDateOfBirth(String dateOfBirth) {
        this.dateOfBirth = dateOfBirth;
    }



    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }
    public String getFirstName()
    {
    return firstName;
    }
    // get/set для ОТЧЕСТВО
    public String getPatronymic() {
        return patronymic;
    }

    public void setPatronymic(String patronymic) {
        this.patronymic = patronymic;
    }

    // get/set для ФАМИЛИЯ
    public String getSurName() {
        return surName;
    }

    public void setSurName(String surName) {
        this.surName = surName;
    }

    // get/set для ПОЛ
    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }


    
    public int compareTo(Object o) {
        throw new UnsupportedOperationException("Not supported yet.");
    }



}



Но после ввода всех данных вылетает исключение
Код

Exception in thread "main" java.lang.NullPointerException
        at laba5.lab.main(lab.java:97)

Ошибку в коде я выделил жирным шрифтом.

Подскажите в чем дело?

PM MAIL   Вверх
powerOn
Дата 4.11.2010, 20:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 47
Всего: 159



а где происходит инициализация ссылки peoples? (peoples = new ArrayList<People>())


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
ЛунныйОборотень
Дата 4.11.2010, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 12.11.2006

Репутация: 1
Всего: 1



Спасибо, помогло!)
PM MAIL   Вверх
sergioK
Дата 4.11.2010, 21:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 207
Регистрация: 15.2.2008

Репутация: нет
Всего: нет



Цитата(ЛунныйОборотень @ 4.11.2010,  20:30)
Спасибо, помогло!)

В таких случаях стоит ставить проверку 

Код

 if(peoples == null ) {
  System.out.println("1111111111111111111");
}


тогда и форум не нужен  smile 


PM MAIL   Вверх
ЛунныйОборотень
Дата 4.11.2010, 22:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 12.11.2006

Репутация: 1
Всего: 1



sergioK, спасибо.

Еще один подвопрос-не хочу создавать отдельную тему:(

А как нормально вывести коллекцию?у меня абракадабра выводится.Ну то есть хеши обьектовsmile а вот как сами обьекты? пробовал приводить их к методу toString() но результат тот же...(
PM MAIL   Вверх
eugine_s
Дата 4.11.2010, 23:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 14.11.2007
Где: Киев

Репутация: нет
Всего: 17



Вопрос не очень корректный. Что значит вывести коллекцию? 

Пройдись по каждому элементу коллекции и выведи в консоль необходимые данные. 

Можно для класс People переопределить метод toString() и использовать его. 

З.Ы. Кстати, Person лучше подходит как название класса People (people переводится как люди).
PM MAIL   Вверх
nc30
Дата 5.11.2010, 08:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Интересующийся :)
*


Профиль
Группа: Участник
Сообщений: 140
Регистрация: 24.6.2010
Где: Санкт-Петербург

Репутация: 5
Всего: 8



ЛунныйОборотень,
Что-то вроде этого:
Код

public class People implements Comparable {

//...

    @Override
    public String toString() {
        return "Фамилия: " + surName + "\nИмя: " + firstName 
                + "\nОтчество: " + patronymic + "\nДата рождения: " + dateOfBirth 
                + "\nПол: " + sex + "\nТелефон: " + telephone 
                + "\nМесто встречи: " + place + "\n";
    }
}


Кстати, имя класса lab также следовало бы написать с заглавной буквы  smile 

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0764 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.