当参数rain and snow没有值时,我遇到问题迫使我的代码顺利运行。实际上,只要有这些参数的值,它就会循环,如果没有,它就会结束。
我已经包含了gson库来帮助我将值作为JSON对象/ strings / double等获取。
for (int l=0; l<40; l++) {
Forecast fcath = new Forecast();
fcath.setMain_temp(obj_fcath.get("list").getAsJsonArray().get(l).getAsJsonObject().get("main").getAsJsonObject().get("temp").getAsDouble());
fcath.setWeather_description(obj_fcath.get("list").getAsJsonArray().get(l).getAsJsonObject().get("weather").getAsJsonArray().get(0).getAsJsonObject().get("description").getAsString());
fcath.setClouds_all(obj_fcath.get("list").getAsJsonArray().get(l).getAsJsonObject().get("clouds").getAsJsonObject().get("all").getAsInt());
fcath.setWind_speed(obj_fcath.get("list").getAsJsonArray().get(l).getAsJsonObject().get("wind").getAsJsonObject().get("speed").getAsDouble());
fcath.setDt_txt(obj_fcath.get("list").getAsJsonArray().get(l).getAsJsonObject().get("dt_txt").getAsString());
fcath.setRain(obj_fcath.get("list").getAsJsonArray().get(l).getAsJsonObject().get("rain").getAsJsonObject().get("3h").getAsDouble());
fcath.setSnow(obj_fcath.get("list").getAsJsonArray().get(l).getAsJsonObject().get("snow").getAsJsonObject().get("3h").getAsDouble());
f.add(fcath);
System.out.println("Date: " + f.get(l).getDt_txt() + " Temp: " + f.get(l).getMain_temp() + " Celsius " + " Chance of Rain: " + f.get(l).getRain() + " Chance of Snow: " + f.get(l).getSnow());
}
如果没有fcath.setRain和fcath.setSnow代码行,则输出如下: Working output photo
假设预测中没有降雨机会 例如 fcath.setRain(。obj_fcath.get( “名单”)getAsJsonArray()得到(L).getAsJsonObject()获得( “雨”)getAsJsonObject()获得( “3H”)getAsDouble()。); == {} 它给了我NullPointerException
答案 0 :(得分:0)
用提供的信息仍然很难说,但似乎如果没有下雨的机会,那么可能
null
是get("3h").getAsDouble()
。然后你不能从null对象做{{1}}。