Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 10.12.2010
Сообщений: 4

Ошибка при заполнении массива объектов! Не могу понять

10.12.2010, 16:20. Показов 3699. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
// Количество автомобилей в базе данных
protected int size ;
 
// Массив базы данных
protected Feature [] cars;
 
 
// Объявления класса характеристик автомобилей
class Feature {
protected String name_auto;    // Название автомобиля
protected int price_auto;      // Цена автомобиля
protected int year_auto;       // Год выпуска автомобиля
protected int power_auto;      // Мощность автомобиля
protected double volume_auto;  // Объем двигателя автомобиля
}
 
// Конструктор без параметров (инициализация данных по умолчанию)
public SAuto ( )
    {
        this.fileOut = "BD.txt";
     
    }
public SAuto( String fileOut )
    {
        this.fileOut = fileOut;
        //Определение количества автомобилей
        cars = new Feature[size];
        for (int i = 0; i < size; i++) {
            cars[i] = new Feature();
        }
       
        
    }
 
// Занесение авто в БД
protected void add_auto() throws IOException
{
  Feature f = new Feature();
  BufferedReader BReader = new BufferedReader
                                (new InputStreamReader(System.in));
        String name = "";
        int price = 0;
        int year = 0;
        int power = 0;
        double volume = 0;
  
//  BReader.readLine();
 
  try
{
      System.out.println("Введите название автомобиля : ");
      f.name_auto = BReader.readLine();
      name = f.name_auto;
     // int i = Integer.valueOf(name);
      cars[0].name_auto = name;
      System.out.println(cars[0]);
//      System.out.println("Введите цену автомобиля : ");
//      f.price_auto = Integer.valueOf(BReader.readLine());
//      price = f.price_auto;
//      System.out.println("Введите год выпуска автомобиля : ");
//      f.year_auto = Integer.valueOf(BReader.readLine());
//       year = f.year_auto;
//      System.out.println("Введите мощность автомобиля : ");
//      f.power_auto = Integer.valueOf(BReader.readLine());
//      power = f.power_auto;
//      System.out.println("Введите объем двигателя автомобиля : ");
//      f.volume_auto = Double.valueOf(BReader.readLine());
//      volume = f.volume_auto;
 
  } catch (IOException Ignored){};
 
System.out.println("Автомобиль успешно добавлен в Базу Данных!");
 
 
}


В итоге получаю на консоль:


Введите название автомобиля :
hfff
Exception in thread "main" java.lang.NullPointerException
at right_choise.SAuto.add_auto(SAuto.java:1 12)
at right_choise.Main.main(Main.java:56)
Java Result: 1
ПОСТРОЕНИЕ УСПЕШНО ЗАВЕРШЕНО (общее время: 7 секунд)

Добавлено через 41 минуту
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
import java.io.*;
import java.util.*;
import java.io.IOException;
import java.io.BufferedReader;
 
public class SAuto {
    // Имя файла результатов
protected String fileOut;
// Количество автомобилей в базе данных
protected int size ;
 
// Массив базы данных
protected Feature [] cars;
 
 
// Объявления класса характеристик автомобилей
class Feature {
protected String name_auto;    // Название автомобиля
protected int price_auto;      // Цена автомобиля
protected int year_auto;       // Год выпуска автомобиля
protected int power_auto;      // Мощность автомобиля
protected double volume_auto;  // Объем двигателя автомобиля
}
 
// Конструктор без параметров (инициализация данных по умолчанию)
public SAuto ( )
    {
        this.fileOut = "BD.txt";
 
    }
public SAuto( String fileOut )
    {
        this.fileOut = fileOut;
        //Определение количества автомобилей
        cars = new Feature[size];
        for (int i = 0; i < size; i++) {
            cars[i] = new Feature();
        }
 
 
    }
 
// Занесение авто в БД
protected void add_auto() throws IOException
{
  Feature f = new Feature();
  BufferedReader BReader = new BufferedReader
                                (new InputStreamReader(System.in));
        String name = "";
        int price = 0;
        int year = 0;
        int power = 0;
        double volume = 0;
 
//  BReader.readLine();
 
  try
{
      System.out.println("Введите название автомобиля : ");
      f.name_auto = BReader.readLine();
      name = f.name_auto;
     // int i = Integer.valueOf(name);
      cars[0].name_auto = name;
      System.out.println(cars[0]);
//      System.out.println("Введите цену автомобиля : ");
//      f.price_auto = Integer.valueOf(BReader.readLine());
//      price = f.price_auto;
//      System.out.println("Введите год выпуска автомобиля : ");
//      f.year_auto = Integer.valueOf(BReader.readLine());
//       year = f.year_auto;
//      System.out.println("Введите мощность автомобиля : ");
//      f.power_auto = Integer.valueOf(BReader.readLine());
//      power = f.power_auto;
//      System.out.println("Введите объем двигателя автомобиля : ");
//      f.volume_auto = Double.valueOf(BReader.readLine());
//      volume = f.volume_auto;
 
  } catch (IOException Ignored){};
 
System.out.println("Автомобиль успешно добавлен в Базу Данных!");
 
 
}
}



Исправил.
main :
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class Main {
    public static void main(String[] args) throws IOException  {
        // Создаем экземпляры класса
        WAuto car = new WAuto();
       car.add_auto();
       car.solution_menu();
       
        
        
       
        
 
    }
    }
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.12.2010, 16:20
Ответы с готовыми решениями:

Ошибка при заполнении массива объектов
Подскажите, что не так: при попытке заполнения второго элемента массива ошибка: import java.util.Scanner; public class ComplexNum { ...

Ошибка при заполнении массива
Помогите пожалуйста решить проблему: Это программа для игры в крестики нолики. В первой функции void instruction() необходимо вывести...

Ошибка при заполнении массива
массив представляет собой таблицу исходных данных для транспортной задачи. тарифы для перевозок вводится норм. остается заполнить кол-во...

8
 Аватар для Skipy
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
10.12.2010, 16:32
Где при инициализации по умолчанию создается массив, к элементам которого Вы так лихо обращаетесь в add_auto?

P.S. Массив какого размера создастся при инициализации не по умолчанию? Будет ли ситуация отличаться от текущей?
0
0 / 0 / 0
Регистрация: 10.12.2010
Сообщений: 4
10.12.2010, 17:07  [ТС]
Skipy

1. он задается до конструктора, я так понимаю, что это не правильно
2. Размер массива будет увеличиваться по мере добавления автомобилей в него ( по-моему )

Добавлено через 16 минут
если не трудно, хотел бы увидеть ошибки и их исправления...)
0
 Аватар для Skipy
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
10.12.2010, 17:17
Лучший ответ Сообщение было отмечено как решение

Решение

Он не создается до конструктора, он объявляется. Разницу чувствуете? Создается массив вызовом new с указанием размеров.

Размер массива не будет увеличиваться никогда. Он неизменен. Массив можно только создать заново.

P.S. Ошибки Вы видите сами. Исправления, как мне казалось, понятны - надо создавать массив и инициализировать его элементы.
3
0 / 0 / 0
Регистрация: 10.12.2010
Сообщений: 4
10.12.2010, 19:33  [ТС]
Java
1
2
3
4
5
public SAuto ( )
    {
        this.fileOut = "BD.txt";
        cars = new Feature [5];
    }


так?

Добавлено через 3 минуты
и что делать с этим?
прошу исправить пожалуйста, тогда я пойму!!!
Java
1
2
3
4
System.out.println("Введите название автомобиля : ");
        f.name_auto = BReader.readLine();
        cars[0].name_auto = name;
        System.out.println(cars[0]);
как всетаки добавить?

Добавлено через 2 часа 2 минуты
up
прошу о помощи
0
636 / 528 / 165
Регистрация: 01.04.2010
Сообщений: 1,843
10.12.2010, 19:46
Забей на массив и пользуйся коллекцией.
0
0 / 0 / 0
Регистрация: 10.12.2010
Сообщений: 4
11.12.2010, 09:54  [ТС]
aleksandy, проблема в том что мне надо сделать этап курсовика без коллекции, используя массивы, а второй этап будет как раз с использованием коллекции!
народ, помогите пожалуйста, как правильно инициализировать массив и заполнить его, уже 2 дня мучаюсь

Добавлено через 13 часов 32 минуты
всё сделал
0
17 / 17 / 1
Регистрация: 28.03.2013
Сообщений: 80
01.04.2013, 20:24
Есть код:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import java.awt.*;
import java.awt.event.ActionEvent;
import javax.swing.*; 
 
public class HelloWorld extends JFrame{
 
    JLabel jLabel = null;
    JTextField jTextField = null;
    MyButton jButton[] = new MyButton[42];
    private int k = 1;
    int i;
     public HelloWorld()
       {     
          super();
          this.setSize(300, 200);         
          setLayout(new GridLayout(6,7));
          getContentPane().setBackground(Color.blue);
          for(i=0; i<42; i++)
          {
              add(getJButton(i));
              jButton[i].addActionListener(new java.awt.event.ActionListener() { //привязываем слушатель
                  @Override
                  public void actionPerformed(ActionEvent e) { 
                      jButton[i].setPL(k);
                  }
              });        
          }
 
       }
     
     private javax.swing.JButton getJButton(int a) {
             jButton[a].setMargin(new Insets(0, 0, 0, 0));
             jButton[a].setBackground(Color.black);
             jButton[a].setBorder(null);
          return jButton[a];
       }    
       
       public static void main(String[] args)
       {
          HelloWorld w = new HelloWorld() ;
          w.setVisible(true);
       }
 }
При попытке скомпилировать выдает ошибку java.lang.NullPointerException. Ошибка началась когда я попытался из класса MyButton сделать массив классов MyButton[42]. Подскажите откуда ноги растут?
0
 Аватар для exiqa
487 / 333 / 71
Регистрация: 24.12.2011
Сообщений: 591
02.04.2013, 00:18
Andrew_zp1, по ссылке, к-рую привел выше Skipy, есть ответ на Ваш вопрос
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.04.2013, 00:18
Помогаю со студенческими работами здесь

Ошибка при заполнении массива
Здравствуйте. Есть класс, в котором объявлены 2 поля и 2-мерный массив. Создал метод, который задает кол-во строк и столбцов, а затем...

Ошибка при заполнении массива
Нужно заполнить массив в четных индексах 1-цей , а в нечетных значением i / 5; using System; using System.Collections.Generic; ...

Ошибка при заполнении массива
Объявляю и пытаюсь заполнить так: TArray__1&lt;System::Byte&gt; *buffer; buffer = new TArray__1 &lt;System::Byte&gt; (6); buffer='r';...

Ошибка при заполнении массива
Есть код: Random r = new Random(); int k = r.Next(0, 10000); int kk = { k }; for (int i = 0; i &lt; k; i++) { kk = i; //Вот...

Ошибка при заполнении массива
Всем привет! Пытаюсь заполнить массив через StringGrid, но при заполнении выдает ошибку &quot;econverterror with message is not a valid...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru