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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помощь с Exception - ом 
:(
    Опции темы
ioManip
Дата 13.11.2014, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Вот есть такой код:
Код

class Element {
    
    private int Delivery;
    private int Value;
    
    public int getDelivery() {
        return Delivery;
    }
    
    public int getValue() {
        return Value;
    }
    
    public void setValue(int value) {
        Value = value;
    }
    
    public void setDelivery(int value) {
        Delivery = value;
    }
    
    public static int findMinElement(int a, int b) {
        
        if (a > b)
            return b;
        if (a == b) {
            return a;
        } else return a;
    }
}


public class main {

    public static void main(String[] args) {

        int i = 0;
        int j = 0;
        
        System.out.print("Введите количество A: ");
        int n = Integer.parseInt((new Scanner(System.in).nextLine()));
        int[] a = new int[n];
        
        System.out.print("Введите количество B: ");
        int m = Integer.parseInt(new Scanner(System.in).nextLine());
        int[] b = new int[m];
        
        Element[][] c = new Element[n][m];
        
        System.out.println("Введите a[i]");
        for (i = 0; i < a.length; i++) {
            a[i] = Integer.parseInt((new Scanner(System.in)).nextLine());
        }
        
        System.out.println("Введите b[i]");
        for (j = 0; j < b.length; j++) {
            b[i] = Integer.parseInt(new Scanner(System.in).nextLine());
        }
        
        System.out.println("Введите c[i][j]");
        for (i = 0; i < n; i++) {
            for (j = 0; j < m; j++) {
                System.out.println("a[{0},{1}] = " + i + j);
               c[i][j].setValue(Integer.parseInt(new Scanner(System.in).nextLine()));
            }
        }
        i = j = 0;
        
        while (i < n && j < m) {
            
            try {
                if (a[i] == 0)
                    i++;
                if (b[j] == 0)
                    j++;
                if (a[i] == 0 && b[j] == 0) {
                    i++;
                    j++;
                }
                
                c[i][j].setDelivery(Element.findMinElement(a[i], b[i]));
                a[i] = a[i] - c[i][j].getDelivery();
                b[j] = b[j] - c[i][j].getDelivery();
                
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
        
        for (i = 0; i < n; i++) {
            for (j = 0; j < m; j++) {
                if (c[i][j].getDelivery() != 0) {
                    System.out.println("{0}" + c[i][j].getValue());
                    System.out.println("({0})" + c[i][j].getDelivery());
                } else {
                    System.out.println("{0}({1})" + c[i][j].getValue() + c[i][j].getDelivery());
                }
            }
            System.out.println();
        }
        
        int resultFunction = 0;
        
        for (i = 0; i < n; i++) {
            for (j = 0; j < m; j++)
            {
                resultFunction = resultFunction + (c[i][j].getValue() * c[i][j].getDelivery());
            }
        }
        System.out.println("Результат: " + resultFunction);
    }
}

И вот в этом месте 
Код

 c[i][j].setValue(Integer.parseInt(new Scanner(System.in).nextLine()));

мне кидает НульПоинтер. Собственно, почему?
--------------------
Мечты не работают, пока ты не работаешь! 
PM MAIL Skype   Вверх
LSD
Дата 13.11.2014, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

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



Потому что в c[i][j] лежит null


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Michael.de
Дата 14.11.2014, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



ioManip, в строке 48 ты создаёшь массив, заполненный не объектами типа Element, а null  >>manual<<
И если ты хочешь весь array заполнить (в цикле) , необходимо сначала инициализировать каждый c[i][j] и лишь затем изменять значения полей объекта.

P.S. Вдогонку:
за строку 85 у нас можно попрощаться с возможностью карьерного роста smile

Это сообщение отредактировал(а) Michael.de - 14.11.2014, 21:55
PM MAIL   Вверх
ioManip
Дата 16.11.2014, 06:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(Michael.de @  14.11.2014,  21:51 Найти цитируемый пост)
за строку 85 у нас можно попрощаться с возможностью карьерного роста

А почему это?
--------------------
Мечты не работают, пока ты не работаешь! 
PM MAIL Skype   Вверх
Michael.de
Дата 17.11.2014, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



ioManip:
Потому что с одной стороны Exception поймано и как-то обработано, но его тип нам не ясен (это RuntimeException, IOException, а может ArrayIndexOutOfBoundsException или NullPointerException etc.) Как приложение должно будет адекватно работать/реагировать, если в try-catch блоке отлавливаются несколько различных Exception-s? И как разработчик будет ошибки искать?
Мой вывод:
1. если несколько Exception - каждое обрабатывать по отдельности (или сгруппировать несколько, но только если реакция приложения на них должна быть одинакова)
2. если только одно, то использовать соответствующее (напр. ClassNotFoundException, но не Exception !!! )

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

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

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


 




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


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

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