Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
5 / 5 / 1
Регистрация: 08.07.2015
Сообщений: 91

Не работает композиция. В чем я ошибся ?

20.07.2015, 11:10. Показов 1255. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть несколько классов.

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
package HW3_3_SP2;
 
/**
 * Created by Valeriu on 16.07.2015.
 */
public class Car {
 
    //состояние машины
    private boolean ready_car;
    //марка машины
    private String car_name;
 
    private  double price;
 
    public Car (boolean ready_car, String car_name, double price){
        this.ready_car = ready_car;
        this.car_name = car_name;
        this.price = price;
    }
 
    //гетеры
    public boolean isReady_car (){
        return ready_car;
    }
 
    public String getCar_name (){
        return car_name;
    }
 
    public double getPrice () {
        return price;
    }
 
    //сетеры
    public void setReady_car (boolean ready_car){
            this.ready_car = ready_car;
    }
 
    public void setCar_name (String car_name){
        this.car_name = car_name;
    }
 
    public void setPrice (double price) {
        this.price = price;
    }
}
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
package HW3_3_SP2;
 
 
/**
 * Created by Valeriu on 16.07.2015.
 */
public class Driver {
 
    //состояние
    private boolean ready_driver;
    //имя
    private String driver_name;
 
    public Driver (boolean ready_driver, String driver_name){
        this.ready_driver = ready_driver;
        this.driver_name = driver_name;
    }
 
    //гетеры
    public boolean isReady_driver (){
        return ready_driver;
    }
 
    public String getDriver_name (){
        return driver_name;
    }
 
    //сетеры
    public void setReady_driver (boolean ready_driver){
            this.ready_driver = ready_driver;
        }
 
    public void setDriver_name (String driver_name){
        this.driver_name = driver_name;
    }
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package HW3_3_SP2;
 
/**
 * Created by Valeriu on 16.07.2015.
 */
public class Dispatcher {
 
    private String disp_name;
 
    public Dispatcher(String disp_name){
        this.disp_name = disp_name;
    }
 
    public String getDisp_name (){
        return disp_name;
    }
 
    public void setDisp_name (String disp_name){
        this.disp_name = disp_name;
    }
}
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
package HW3_3_SP2;
 
/**
 * Created by Valeriu on 16.07.2015.
 */
public class Passage {
 
    {
        idGenerator++;
    }
    private static int idGenerator = 0;
    private int id = idGenerator;
    private String from_driver;
    private String where_driver;
    
    //тут я импортирую мои другие классы
    private Car car;
    private Driver driver;
    private Dispatcher dispatcher;
 
 
    public Passage(String from_driver, String where_driver) {
        this.from_driver = from_driver;
        this.where_driver = where_driver;
    }
 
 
    public int getId() {
        return id;
    }
 
    public String getFrom_driver() {
        return from_driver;
    }
 
    public String getWhere_driver() {
        return where_driver;
    }
    
    //гетер моего диспетчера
    public Dispatcher dispatcher () {
        return dispatcher;
    }
 
    public void setId(int id) {
        this.id = id;
    }
 
    public void setFrom_driver(String from_driver) {
        this.from_driver = from_driver;
    }
 
    public void setWhere_driver(String where_driver) {
        this.where_driver = where_driver;
    }
    
    //сетер моего диспетчера
    public void setDispatcher (Dispatcher dispatcher) {
        this.dispatcher = dispatcher;
    }
 
    //в метод кидаю гетер моего диспетчера
    public void show() {
        System.out.printf("%2s %19s %19s %20s", getId(), getFrom_driver(), getWhere_driver(), dispatcher.getDisp_name());
        }
}
Мой main:

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
package HW3_3_SP2;
 
/**
 * Created by Valeriu on 16.07.2015.
 */
public class Depot {
    public static void main(String[] args) {
        Passage[] passage = new Passage[5];
        passage[0] = new Passage("New Yourk", "Los Angeles");
        passage[1] = new Passage("Kyiv", "Lviv");
        passage[2] = new Passage("Moskva", "Piter");
        passage[3] = new Passage("Budapesht", "Berlin");
        passage[4] = new Passage("Riga", "Stokgolm");
        Dispatcher [] dispatcher = new Dispatcher[5];
        dispatcher[0] = new Dispatcher("Tanya");
        dispatcher[1] = new Dispatcher("Irina");
        dispatcher[2] = new Dispatcher("Inna");
        dispatcher[3] = new Dispatcher("Natasha");
        dispatcher[4] = new Dispatcher("Polina");
        Car [] car = new Car[5];
        car[0] = new Car(false, "Volvo", 5.65);
        car[1] = new Car(true, "Toyota", 7.65);
        car[2] = new Car(false, "21099" ,8.80);
        car[3] = new Car(true, "BMW X6", 3.33);
        car[4] = new Car(true, "Mazda 3", 2.65);
        Driver [] driver = new Driver[5];
        driver[0] = new Driver(true, "Vasya");
        driver[1] = new Driver(false, "Igor");
        driver[2] = new Driver(false, "Anton");
        driver[3] = new Driver(true, "Valeriu");
        driver[4] = new Driver(true, "Ruslan");
 
 
 
        System.out.println("All passages:");
        System.out.printf("%2s %19s %19s %18s", "Id", "From", "Where", "Disp name");
        for (int i = 0; i < passage.length; i++) {
            System.out.println(" ");
            passage[i].show();
        }
 
    }
}
Выкидывает эксепшен. По идее, я все сделал правильно. Я сделал: private Dispather dispather. Сделал для него гетер/сетер. И включил его в метод show. Но оно не работает.
Выдает:
All passages:
Id From Where Disp name
Exception in thread "main" java.lang.NullPointerException
at HW3_3_SP2.Passage.show(Passage.java:68)
at HW3_3_SP2.Depot.main(Depot.java:39)
at sun.reflect.NativeMethodAccessorImpl.inv oke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.inv oke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl .invoke(DelegatingMethodAccessorImpl.jav a:43)
at java.lang.reflect.Method.invoke(Method.j ava:497)
at com.intellij.rt.execution.application.Ap pMain.main(AppMain.java:140)
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.07.2015, 11:10
Ответы с готовыми решениями:

В чём я ошибся?
Частица пролетает расстояние L=2 м равномерно, а затем тормозит с ускорением а=5*105 м/с. При какой скорости частицы время движения ее от...

в чём я ошибся
// ConsoleApplication12.cpp: определяет точку входа для консольного приложения. // #include &quot;stdafx.h&quot; ...

В чем я ошибся?
Это незаконченный отрывок кода. При компиляции должен появляться текст и несколько линий. Однако по какой-то причине программа сразу после...

9
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
20.07.2015, 11:16
Duke_Nukem147,
Java
1
  System.out.printf("%2s %19s %19s %20s", getId(), getFrom_driver(), getWhere_driver(), dispatcher.getDisp_name());
dispatcher.getDisp_name
dispatcher не инициализирован
0
5 / 5 / 1
Регистрация: 08.07.2015
Сообщений: 91
20.07.2015, 11:28  [ТС]
Цитата Сообщение от KEKCoGEN Посмотреть сообщение
Duke_Nukem147,
Java
1
  System.out.printf("%2s %19s %19s %20s", getId(), getFrom_driver(), getWhere_driver(), dispatcher.getDisp_name());
dispatcher.getDisp_name
dispatcher не инициализирован
да, но он инициализирован, у меня в Массиве. Или Вы предлагаете сделать так, после конструктора:
dispatcher.setDisp_name("Tanya");
типо такого ?
0
0 / 0 / 1
Регистрация: 19.07.2015
Сообщений: 3
20.07.2015, 11:29
Добрый день!
Методы класса "class Dispatcher" должны вызываться из объекта этого класса!

Java
1
2
Dispatcher d = new Dispatcher();
d.getDisp_name ();
Получается Вам нужно в метод Show() передать как параметр объект класса Dispatcher
Java
1
2
3
public void show(Dispatcher dispatcher){
        System.out.printf("%2s %19s %19s %20s", getId(), getFrom_driver(), getWhere_driver(), dispatcher.getDisp_name());
        }
0
5 / 5 / 1
Регистрация: 08.07.2015
Сообщений: 91
20.07.2015, 11:35  [ТС]
Цитата Сообщение от iLex Посмотреть сообщение
Добрый день!
Методы класса "class Dispatcher" должны вызываться из объекта этого класса!

Java
1
2
Dispatcher d = new Dispatcher();
d.getDisp_name ();
Получается Вам нужно в метод Show() передать как параметр объект класса Dispatcher
Java
1
2
3
public void show(Dispatcher dispatcher){
        System.out.printf("%2s %19s %19s %20s", getId(), getFrom_driver(), getWhere_driver(), dispatcher.getDisp_name());
        }
это писать мне в классе Passage ? В таком случае, new Dispatcher(); требует параметров. у меня в методе main для него уже есть параметры.

Java
1
2
3
4
5
6
 Dispatcher [] dispatcher = new Dispatcher[5];
        dispatcher[0] = new Dispatcher("Tanya");
        dispatcher[1] = new Dispatcher("Irina");
        dispatcher[2] = new Dispatcher("Inna");
        dispatcher[3] = new Dispatcher("Natasha");
        dispatcher[4] = new Dispatcher("Polina");
0
0 / 0 / 1
Регистрация: 19.07.2015
Сообщений: 3
20.07.2015, 11:57
Лучший ответ Сообщение было отмечено Duke_Nukem147 как решение

Решение

Вам нужно поправить метод
Java
1
Show()
в классе Passage
Java
1
2
3
public void show(Dispatcher dispatcher){
        System.out.printf("%2s %19s %19s %20s", getId(), getFrom_driver(), getWhere_driver(), dispatcher.getDisp_name());
        }
И при вызове его в классе
Java
1
main()
передать ему созданный объект класса Dispatcher.
Java
1
2
3
4
5
6
Dispatcher [] dispatcher = new Dispatcher[5];
        dispatcher[0] = new Dispatcher("Tanya");
        dispatcher[1] = new Dispatcher("Irina");
        dispatcher[2] = new Dispatcher("Inna");
        dispatcher[3] = new Dispatcher("Natasha");
        dispatcher[4] = new Dispatcher("Polina");
for (int i = 0; i < passage.length; i++) {
System.out.println(" ");
passage[i].show(dispatcher[i]);
}

По-моему должно работать так)

Добавлено через 2 минуты
Упс, не в классе main(), а методе класса Depot

Добавлено через 8 минут
Я сам только начал учить Java!
Могу порекомендавать к прочтению К Хорстманн и Г Корнелл Java 2 том 1 Основы, после нее можно Б Эккель Философия Java, можно в обратном порядке, но мне было понятнее так!
На ютюбе много роликов, Yakov Fain хорошо рассказывает!
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
20.07.2015, 12:10
iLex, не говорите глупостей. Ненадо в метод show() ничего передавать.

Duke_Nukem147, вы должны передавать диспетчера, машину и водителя в конструктор класса Passage
0
5 / 5 / 1
Регистрация: 08.07.2015
Сообщений: 91
20.07.2015, 12:26  [ТС]
Цитата Сообщение от iLex Посмотреть сообщение
Вам нужно поправить метод
Java
1
Show()
в классе Passage
Java
1
2
3
public void show(Dispatcher dispatcher){
        System.out.printf("%2s %19s %19s %20s", getId(), getFrom_driver(), getWhere_driver(), dispatcher.getDisp_name());
        }
И при вызове его в классе
Java
1
main()
передать ему созданный объект класса Dispatcher.
Java
1
2
3
4
5
6
Dispatcher [] dispatcher = new Dispatcher[5];
        dispatcher[0] = new Dispatcher("Tanya");
        dispatcher[1] = new Dispatcher("Irina");
        dispatcher[2] = new Dispatcher("Inna");
        dispatcher[3] = new Dispatcher("Natasha");
        dispatcher[4] = new Dispatcher("Polina");
for (int i = 0; i < passage.length; i++) {
System.out.println(" ");
passage[i].show(dispatcher[i]);
}

По-моему должно работать так)

Добавлено через 2 минуты
Упс, не в классе main(), а методе класса Depot

Добавлено через 8 минут
Я сам только начал учить Java!
Могу порекомендавать к прочтению К Хорстманн и Г Корнелл Java 2 том 1 Основы, после нее можно Б Эккель Философия Java, можно в обратном порядке, но мне было понятнее так!
На ютюбе много роликов, Yakov Fain хорошо рассказывает!
Спасибо большое. Очень помогли.

Добавлено через 2 минуты
Цитата Сообщение от KEKCoGEN Посмотреть сообщение
iLex, не говорите глупостей. Ненадо в метод show() ничего передавать.

Duke_Nukem147, вы должны передавать диспетчера, машину и водителя в конструктор класса Passage
вот так что ли ?

Java
1
    public Passage(String from_driver, String where_driver, Car car, Driver driver, Dispatcher dispatcher)
а потом this-ами их вызвать ?

но у меня потом нету доступа к свойствам, оно не работает. я пишу например тот же car.getCar_name. Оно возращает exeption


и потом, мой массив Passage в Main расширяется. и мне надо писать туда уже (dispather, car, driver).
а мне надо писать свойства, например disp_name и прочее

 Комментарий модератора 
5.17 Запрещено избыточное цитирование. Цитируйте только необходимые части сообщений, на которые отвечаете.
1
0 / 0 / 1
Регистрация: 19.07.2015
Сообщений: 3
20.07.2015, 12:46
Может пересмотреть структуру классов и сделать подругому?
Создать класс путевой лист, который будет в ключать в себя все остальное (Клиента, Диспетчера, Водителя, Маршрут, Авто)?
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
20.07.2015, 13:19
Duke_Nukem147, вы книги читаете? У вас по-моему полная каша в голове относительно классов, наследования и модификаторов доступа. Попробуйте сделать заданее по-проще для начала.

Добавлено через 46 секунд
Цитата Сообщение от iLex Посмотреть сообщение
Создать класс путевой лист, который будет в ключать в себя все остальное (Клиента, Диспетчера, Водителя, Маршрут, Авто)?
Класс Маршрут уже выполняет эти ф-ции. Нет смысла делать ещё один класс.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.07.2015, 13:19
Помогаю со студенческими работами здесь

Скажите в чем ошибся!
Друзья, спасайте, не могу понять в чем здесь у меня ошибка! Вроде синткасически все написано правильно, логически... ну не уверен... ...

В чем ошибся, невероятно
#include &lt;stdio.h&gt; main() { int integer1; printf(&quot;Введите первое число: &quot;); scanf(&quot;%d&quot;,...

В чем я ошибся? (Многопоточная программа)
Написать программу, которая принимает в качестве параметров набор имен файлов данных (произвольное число) и запускает все файлы на...

Не могу понять в чем ошибся.
После апдейта сайт вылетел из показа текст роботс.тхт User-agent: * Disallow: host: psy.alinagrey.ru Ответ Я на добавление:...

Массивы: в чём я ошибся, указывает на оператор (+=), что не так?
Вот программный код написанный мной: #include &lt;iostream&gt; #include &lt;cmath&gt; using namespace std; void main () { int c,a,b,i; ...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Ниже машинный перевод статьи The Thinkpad X220 Tablet is the best budget school laptop period . Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы,. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru