java.lang.Исключение NullPointerException: 2-й элемент равен нулю

#android #nullpointerexception #observable #rx-java #rx-java2

#Android #исключение nullpointerexception #наблюдаемый #rx-java #rx-java2

Вопрос:

В Activity :

 Double[] numbers = new Double[33];

for (int i = 0; i < array.length (); i  ) {
    JSONObject o = array.getJSONObject ( i );
    Double price = o.getDouble ( "totalprice" );
    numbers[i] = price;
}

Observable<Double> observable = Observable.fromArray(numbers);

                        MathObservable
                                .sumDouble(observable)
                                .subscribe(new Observer<Double>() {
                                    @Override
                                    public void onSubscribe(Disposable d) {
                                        Log.d( TAG,d.toString() );
                                    }

                                    @Override
                                    public void onNext(Double aDouble) {
                                        System.out.println("Sum: "   aDouble);
                                        Toast.makeText( getContext() ,aDouble "" ,Toast.LENGTH_SHORT ).show();
                                        //if you want int convert here
                                    }

                                    @Override
                                    public void onError(Throwable e) {
                                        Log.d( TAG,e.getMessage() );
                                    }

                                    @Override
                                    public void onComplete() {
                                        Log.d( TAG,"complete");
                                    }
                                });
  

Я хочу получить общую цену с помощью RxJava.
Но возникает ошибка :

java.lang.Исключение NullPointerException: 2-й элемент равен нулю

В массиве есть значение

число = {75.0,40.0}

Комментарии:

1. Ошибка указывает на то, что элемент с индексом 2 имеет значение null.

Ответ №1:

Вы выделяете Double массив размером 33. Когда вы делаете это, вы получаете массив размером 33, каждый элемент которого равен null . Таким образом, элемент в позиции 2 null , как и любой другой элемент, за исключением элементов в позиции 0 и 1, которые вы назначаете.
RxJava2 не поддерживает null значения в потоках, поэтому он выдает это исключение.