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

Ошибка при заполнении массива объектов

26.06.2013, 11:56. Показов 1868. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите, что не так: при попытке заполнения второго элемента массива ошибка:
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
import java.util.Scanner;
 
public class ComplexNum {
    
    public static final int MAX = 2;
 
    public static void main(String[] args) {
        new ComplexNum().input();       
    }
    
    public void input(){
        ComplexNumber[] q = new ComplexNumber[MAX];
        for (int k = 0; k < MAX; k++) {
            System.out.println("Enter " + (k+1) + " complex number: ");
            ComplexNumber b = keyboard(k);
            q[k] = b;
        }
 
    }
    
    public ComplexNumber keyboard(int i){
        Scanner in = new Scanner(System.in);
        System.out.println("enter real part: ");
        double x = in.nextDouble();
        System.out.println("enter imaginary part: ");
        double y = in.nextDouble();
        ComplexNumber a = new ComplexNumber(x, y);
        in.close();
        return a;
    }
}
Enter 1 complex number:
enter real part:
3
enter imaginary part:
4
Enter 2 complex number:
enter real part:
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextDouble(Unknown Source)
at ComplexNum.keyboard(ComplexNum.java:27)
at ComplexNum.input(ComplexNum.java:18)
at ComplexNum.main(ComplexNum.java:10)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.06.2013, 11:56
Ответы с готовыми решениями:

Ошибка при заполнении массива объектов! Не могу понять
// Количество автомобилей в базе данных protected int size ; // Массив базы данных protected Feature cars; // Объявления...

Как сделать, чтобы при заполнении массива, дроби, получаемые при делении, округлялись до трех знаков после запятой
Создайте два массива из 10 целых случайных чисел из отрезка и третий массив из 10 действительных чисел. Каждый элемент с i-ым индексом...

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

10
 Аватар для lowercase
213 / 202 / 85
Регистрация: 09.05.2012
Сообщений: 494
26.06.2013, 12:07
уберите in.close()
1
1 / 1 / 0
Регистрация: 23.03.2009
Сообщений: 106
26.06.2013, 14:24  [ТС]
А как теперь вывести массив qs?
Java
1
2
3
4
5
6
7
8
9
public void output(){
        System.out.println("=============");
        int i = 0;
        for(ComplexNumber x: qs) {
            ++i;
            System.out.println(i + "st complex number is: " + x.getReal() + " 
+ i * " + x.getImaginary());
        }
    }
- не выходит, Exception in thread "main" java.lang.NullPointerException
getReal и getImaginary из класса:
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
public class ComplexNumber {
    
    private double x, y;
    
    public ComplexNumber(double real, double imaginary) {
        this.x = real;
        this.y = imaginary;
    }
    
    public double getReal() {
        return x;
    }
    public double getImaginary() {
        return y;
    }
    public void setReal(double x) {
        this.x = x;
    }
    public void setImaginary(double y) {
        this.y = y;
    }
 
// some methods..
}
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
26.06.2013, 14:47
у вас в коде все ошибки погложены по видимому, и нет никакой валидации при добавлении ComplexNumber в коллекцию

вот у вас и сыплет NPE, а надо бы что нибудь типа
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class ComplexNumber {
    
    private double x, y;
    
    public ComplexNumber(double real, double imaginary) {
        this.x = real;
        this.y = imaginary;
    }
    
 ....
 
    public boolean isValid() {
       return ((x != null) == (y != null));
    }
}
Java
1
2
3
ComplexNumber b = keyboard(k);
if(b.isValid())
   q[k] = b;
1
1 / 1 / 0
Регистрация: 23.03.2009
Сообщений: 106
28.06.2013, 16:11  [ТС]
К сожалению, не помогло.
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
public class ComplexNum {
    
    public static final int MAX = 2;
    ComplexNumber[] qs = new ComplexNumber[MAX];
    
    public static void main(String[] args) {        
        new ComplexNum().input();
        new ComplexNum().output();
    }
    public void input(){
        for (int k = 0; k < MAX; k++) {
            System.out.println("Enter " + (k+1) + " complex number: ");
            ComplexNumber b = keyboard(k);
            if (b.isValid()) {
                System.out.println(b.isValid());
                qs[k] = b;
    }   }   }   
    public ComplexNumber keyboard(int i){
        Scanner in = new Scanner(System.in);
        System.out.println("enter real part: ");
        double x = in.nextDouble();
        System.out.println("enter imaginary part: ");
        double y = in.nextDouble();
        ComplexNumber a = new ComplexNumber(x, y);
        return a;
    }
    public void output(){
        System.out.println("=============");
        for(ComplexNumber x: qs)
            System.out.println("st complex number is: " + x.getReal() + " + i * " + x.getImaginary());
    }        }
Java
1
System.out.println(b.isValid());
- выводит true, те в массив якобы записал, но все равно вылетает ошибка:Exception in thread "main" java.lang.NullPointerException
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
28.06.2013, 17:00
давайте весь код посмотрим что нетак
0
1 / 1 / 0
Регистрация: 23.03.2009
Сообщений: 106
28.06.2013, 17:11  [ТС]
ComplexNumber.java:
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
public class ComplexNumber {
    
    private double x, y;
    
    public ComplexNumber(double real, double imaginary) {
        this.x = real;
        this.y = imaginary;
    }
    
    public double getReal() {       return x;   }
    public double getImaginary() {      return y;   }
    public void setReal(double x) {     this.x = x; }
    public void setImaginary(double y) {        this.y = y; }
        
    public static ComplexNumber add(ComplexNumber a, ComplexNumber b) {
        return new ComplexNumber(a.x + b.x, a.y + b.y);
    }
    
    public ComplexNumber add(ComplexNumber a) {
        return new ComplexNumber(this.x + a.x, this.y + a.y);
    }
    
    public static ComplexNumber multiply(ComplexNumber a, ComplexNumber b){
        return new ComplexNumber(a.x*b.x - a.y*b.y, a.x*b.x + a.y*b.y);
    }
    
    public ComplexNumber multiply(ComplexNumber a){
        return new ComplexNumber(x*a.x - y*a.y, x*a.x + y*a.y);
    }
    
    public boolean isValid() {      return ((x != 0) == (y != 0));  }
}
ComplexNum.java:
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
import java.util.Scanner;
 
public class ComplexNum {
    
    public static final int MAX = 2;
    ComplexNumber[] qs = new ComplexNumber[MAX];
    
    public static void main(String[] args) {
        
        new ComplexNum().input();
        new ComplexNum().output();
        
    }
    
    public void input(){
        for (int k = 0; k < MAX; k++) {
            System.out.println("Enter " + (k+1) + " complex number: ");
            ComplexNumber b = keyboard(k);
            if (b.isValid()) {
                System.out.println(b.isValid());
                qs[k] = b;
            }
        }
    }
    
    public ComplexNumber keyboard(int i){
        Scanner in = new Scanner(System.in);
        System.out.println("enter real part: ");
        double x = in.nextDouble();
        System.out.println("enter imaginary part: ");
        double y = in.nextDouble();
        ComplexNumber a = new ComplexNumber(x, y);
        return a;
    }
    
    public void output(){
        System.out.println("=============");
        for(ComplexNumber x: qs)
            System.out.println("st complex number is: " + x.getReal() + " + i * " + x.getImaginary());
    }
}
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
28.06.2013, 17:18
если не обращать внимание на некоторые идеологически неправильные подходы, то ошибка чинится вот так
Java
1
2
3
4
5
6
7
   public static void main(String[] args) {
 
        ComplexNum complexNum = new ComplexNum();
        complexNum.input();
        complexNum.output();
 
    }
а проблема была в том что ввод выполнялся в первый объект, а вывод на новом, в котором было пусто
0
1 / 1 / 0
Регистрация: 23.03.2009
Сообщений: 106
28.06.2013, 22:56  [ТС]
Спасибо.
Какие именно подходы на верны?
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
28.06.2013, 23:28
при каждом запуске метода открывать сканер, называть методы бессмысленно, создавать в классе контейнере методы вычисления чегото
0
1 / 1 / 0
Регистрация: 23.03.2009
Сообщений: 106
28.06.2013, 23:37  [ТС]
Учту это.. Спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.06.2013, 23:37
Помогаю со студенческими работами здесь

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

Ошибка при заполнении массива
хочу заполнить массивы класса (и сразу же записать в файл), если выбрать количество записей - 1, то все работает нормально, но больше...

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

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

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


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 30.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru