gpt4 book ai didi

java - onError java.lang.NullPointerException : Attempt to invoke virtual method 'double java.lang.Double.doubleValue()' on a null object reference 错误

转载 作者:行者123 更新时间:2023-11-29 04:31:34 29 4
gpt4 key购买 nike

<分区>

我已经编写了以下代码来查找 pageCount 的漫画,这些漫画在一定的预算之内。

起初我试图想出具有如下架构的代码:

  • Stream 给出 MarvelComic 对象的价格。
  • 我将流中的 MarvelComic 对象的价格与流中的先前漫画的价格相加,并检查它是否<预算
  • 如果是,则我将 MarvelComic 对象的 pageCount 与流中的先前 MarvelComic 对象的 pageCount 总和相加。
  • 如果是,则调用订阅者的onNext

由于我无法设计出一种方法来编写上述步骤中提到的代码,因此我求助于将命令式编程与响应式编程相结合。结果我写了下面的代码:

Observable.fromIterable(getMarvelComicsList()).
map(new Function<MarvelComic, HashMap<String, Double>>() {
@Override
public HashMap<String, Double> apply(@NonNull MarvelComic marvelComic) throws Exception {
HashMap<String, Double> map = new HashMap<String, Double>();
map.put("price", Double.valueOf(marvelComic.getPrice()));
map.put("pageCount", Double.valueOf(marvelComic.getPageCount()));
map.put("comicCount", Double.valueOf(marvelComic.getPageCount()));
return map;
}
})
.scan(new HashMap<String, Double>(), new BiFunction<HashMap<String, Double>, HashMap<String, Double>, HashMap<String, Double>>() {
@Override
public HashMap<String, Double> apply(@NonNull HashMap<String, Double> inputMap, @NonNull HashMap<String, Double> newValueMap) throws Exception {
double sum = inputMap.get("price")+newValueMap.get("price");
double count = inputMap.get("pageCount")+newValueMap.get("pageCount");
double comicCount = inputMap.get("comicCount")+newValueMap.get("comicCount");

HashMap<String, Double> map = new HashMap<String, Double>();
map.put("price", sum);
map.put("pageCount", count);
map.put("comicCount", comicCount);

return map;
}
})
.takeWhile(new Predicate<HashMap<String, Double>>() {
@Override
public boolean test(@NonNull HashMap<String, Double> stringDoubleHashMap) throws Exception {
return stringDoubleHashMap.get("price") < budget;
}
})
.subscribe(new DisposableObserver<HashMap<String, Double>>() {
@Override
public void onNext(HashMap<String, Double> stringDoubleHashMap) {
double sum = stringDoubleHashMap.get("price");
double pageCount = stringDoubleHashMap.get("pageCount");
double comicCount = stringDoubleHashMap.get("comicCount");
Timber.e("sum %s pageCount %s ComicCount: %s", sum, pageCount, comicCount);
}

@Override
public void onError(Throwable e) {
Timber.e("onError %s", e.fillInStackTrace());
}

@Override
public void onComplete() {
Timber.e("onComplete");
}
});

我的预订:

  1. 每次在 map(), scan() 中创建一个新的 Hashmap 是个好主意吗? ?
  2. 如何进一步改进此代码?

问题:

此代码在 onError 中给出 NullPointerException因为map.get("price")scan() 中返回 null .我不太确定原因。

错误:

 onError java.lang.NullPointerException: Attempt to invoke virtual method 'double java.lang.Double.doubleValue()' on a null object reference

注意:

HashMap 不为空,由于某种原因,double 字段返回为 NULL。我在想办法。

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com