24小時查的到,但是3天七天卻查不到信息,這是為啥,明明是同樣的代碼
if(a==1){
System.out.print("請輸入城市名稱查詢24小時天氣預(yù)報:");
String city=in.next();
? ? WeatherUtils weatherUtils =new WeatherUtilsImpl();
? ? List<HourWeather> weatherList=weatherUtils.w24h("0d8abeeafc364b5aaa73b7e52ceb83ba", city);
// ? ? System.out.println(weatherList);
? ? if(weatherList.size()==0){
? ? System.out.println("未查詢到數(shù)據(jù)");
? ? }else{
? ? for(HourWeather hourWeather:weatherList){
? ? String template="%s月%s日%s時|%-3s|%-20s|%-8s|%-4s";
String row=String.format(template, new String[]{
? ? hourWeather.getMonth(),
? ? hourWeather.getDay(),
? ? hourWeather.getHour(),
? ? hourWeather.getWindDirection(),
? ? hourWeather.getWindPower(),
? ? hourWeather.getWeather(),
? ? hourWeather.getTemperature()
? ? });
System.out.println(row);
? ? }
? ? }
}else if(a==2){
System.out.print("請輸入城市名稱查詢3天天氣預(yù)報:");
String city=in.next();
WeatherUtils weatherUtils =new WeatherUtilsImpl();
? ? List<DayWeather> weatherList=weatherUtils.w3d("0d8abeeafc364b5aaa73b7e52ceb83ba", city);
// ? ? System.out.println(weatherList);
? ? if(weatherList.size()==0){
? ? System.out.println("未查詢到信息");
? ? }else{
? ? for(DayWeather weather:weatherList){
? ? String template="%-2s月%-2s日|氣溫:%s(日)%s(夜)|天氣:%s(日)%s(夜)|風(fēng)力:%s(日)%s(夜)";
? ? String row =String.format(template, new String[]{
? ? weather.getMonth(),
? ? weather.getDay(),
? ? weather.getDayAirTemperature(),
? ? weather.getNightAirTemperature(),
? ? weather.getDayWeather(),
? ? weather.getNightWeather(),
? ? weather.getDayWindPower(),
? ? weather.getNightWindPower()
? ? });
? ? System.out.println(row);
? ? }
? ? }
? ??
}else if(a==3){
System.out.print("請輸入城市名稱查詢7天天氣預(yù)報:");
String city=in.next();
WeatherUtils weatherUtils =new WeatherUtilsImpl();
List<DayWeather> weatherList=weatherUtils.w7d("0d8abeeafc364b5aaa73b7e52ceb83ba", city);
// ? ? System.out.println(weatherList);
? ? if(weatherList.size()==0){
? ? System.out.println("未查詢到信息");
? ? }else{
? ? for(DayWeather weather:weatherList){
? ? String template="%-2s月%-2s日|氣溫:%s(日)%s(夜)|天氣:%s(日)%s(夜)|風(fēng)力:%s(日)%s(夜)";
? ? String row =String.format(template, new String[]{
? ? weather.getMonth(),
? ? weather.getDay(),
? ? weather.getDayAirTemperature(),
? ? weather.getNightAirTemperature(),
? ? weather.getDayWeather(),
? ? weather.getNightWeather(),
? ? weather.getDayWindPower(),
? ? weather.getNightWindPower()
? ? });
? ? System.out.println(row);
? ? }
? ? }
? ??
}
2023-05-04
public?List<DayWeather>?w3d(String?appCode,?String?area)?{ ????List<DayWeather>?resultList?=?new?ArrayList<DayWeather>(); ????try?{ ????????//新建查詢請求 ????????OkHttpClient?client?=?new?OkHttpClient(); ????????Request?request?=?new?Request.Builder() ????????????????.get() ????????????????.url("http://ali-weather.showapi.com/day15?area="?+?area) ????????????????.header("Authorization",?"APPCODE?"?+?appCode) ????????????????.build(); ????????Call?call?=?client.newCall(request); ????????Response?response?=?call.execute(); ????????Gson?gson?=?new?GsonBuilder() ????????????????.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES) ????????????????.create(); ????????//獲取服務(wù)器返回數(shù)據(jù) ????????String?resBody?=?response.body().string(); ????????Map?result?=?gson.fromJson(resBody,?new?TypeToken<Map>()?{ ????????}.getType()); ????????//包裝為對象集合 ????????//?*************?以下是修改部分?******************** ????????List<Map<String,?String>>?dayList?=?this.getValue(result,?"showapi_res_body.dayList",?ArrayList.class); ????????//如果沒有找到對應(yīng)地區(qū)天氣數(shù)據(jù),返回空的List列表 ????????if?(dayList?==?null?||?dayList.size()?==?0)?{ ????????????return?new?ArrayList<DayWeather>(); ????????} ????????Iterator<Map<String,?String>>?iterator?=?dayList.iterator(); ????????for?(int?i?=?0;?i?<?3;?i++)?{ ????????????if?(iterator.hasNext())?{ ????????????????Map<String,?String>?day?=?iterator.next(); ????????????????DayWeather?dayWeather?=?new?DayWeather(); ????????????????dayWeather.setYear(day.get("daytime").substring(0,?4)); ????????????????dayWeather.setMonth(day.get("daytime").substring(4,?6)); ????????????????dayWeather.setDay(day.get("daytime").substring(6,?8)); ????????????????dayWeather.setDayAirTemperature(day.get("day_air_temperature")); ????????????????dayWeather.setNightAirTemperature(day.get("night_air_temperature")); ????????????????dayWeather.setDayWeather(day.get("day_weather")); ????????????????dayWeather.setNightWeather(day.get("night_weather")); ????????????????dayWeather.setDayWindPower(day.get("day_wind_power")); ????????????????dayWeather.setNightWindPower(day.get("night_wind_power")); ????????????????resultList.add(dayWeather); ????????????} ????????} ????????//?*************?以上是修改部分?******************** ????}?catch?(Exception?e)?{ ????????throw?new?RuntimeException(e); ????} ????return?resultList; }2022-08-25
已經(jīng) 按老師的教程完成啦,供大家參考
https://github.com/carrieguo/java-weather-forecast.git
2021-05-05
可能是該城市沒有3天7天的數(shù)據(jù),可以直接到API頁面查詢驗證數(shù)據(jù)是否存在。