目录
5-1开通阿里云市场天气预报服务
天气 API包含丰富的天气数据,不仅有实时温度、湿度、风速、降水等这些基础数据,还有过去的历史天气数据和未来的天气预测数据,顶级的天气 API 接口还会包括天气灾害预警,空气质量指数,日出日落、潮汐及月相相关的天文气象等数据。
操作系统已经为我们实现了很多功能,它们都被封装成了一个一个的函数,有成百上千个之多,这些函数就叫做 API。程序员要想使用某个功能,只需要调用相应的函数。Windows、Linux、Mac OS、Unix 这些常见的操作系统大部分功能都使用C语言开发,它们的 API 也以C语言的形式呈现。操作系统 API 数目众多,官方必须提供详细的说明文档(Windows API 的说明文档叫 MSDN),程序员在使用 API 时,需要频繁地查阅这些文档。
访问阿里云
说得更加通俗易懂一些,别人写好的代码,或者编译好的程序,提供给你使用,就叫做API。你使用了别人代码(或者程序)中的某个函数、类、对象,就叫做使用了某个API。
5-2实现24小时天气预报查询功能
代码
结果
Java包里的内容
源代码Java包
5-3格式化输出天气预报结果
格式化
5-4实现未来3天天气预报查询功能
代码
结果
5-5实现未来7天天气预报查询功能
代码
结果
Java代码总结
package imoocweather; //包名
import com.imooc.weather.DayWeather;
import com.imooc.weather.HourWeather;
import com.imooc.weather.WeatherUtils;
import com.imooc.weather.impl.WeatherUtilsImpl;
import java.util.List;
import java.util.Scanner;
public class Application { //创建类
public static void main(String[] args) {//主函数
System.out.println("查询最近天气预报:");
System.out.println("输入1:查询未来24小时天气预报:");
System.out.println("输入2:查询未来3天天气预报");
System.out.println("输入3:查询未来7天天气预报");
System.out.print("请输入您的选择:");
Scanner scanner = new Scanner(System.in);
int i = scanner.nextInt();
System.out.println("用户输入数字:" + i);
if (i==1){
System.out.print("请输入城市名称查询未来24小时天气预报:");
String city = scanner.next();
WeatherUtils weatherUtils = new WeatherUtilsImpl();
List<HourWeather> weatherList = weatherUtils.w24h("811c218772da47f28834cc6a6a50ce41",city);//API输入自己的api应用程序编程接口,这里就不提供了!
System.out.println(weatherList);
if (weatherList.size() == 0){
System.out.println("抱歉,未收录您查询的城市天气数据。");
}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 (i==2){
System.out.print("请输入城市名称查询未来3天天气预报:");
String city = scanner.next();
WeatherUtils weatherUtils = new WeatherUtilsImpl();
List<DayWeather> weatherList = weatherUtils.w3d("811c218772da47f28834cc6a6a50ce41", city);//API输入自己的api应用程序编程接口
System.out.println(weatherList.size());
if (weatherList.size() == 0) {
System.out.println("抱歉,未收录您查询的城市天气数据。");
}else{
for (DayWeather weather : weatherList){
String template = "%-2s月%-2s日 | 气温: %s℃(日) %s℃(夜) | 天气: %s(日) %s(夜) | 风力: %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 (i==3) {
System.out.print("请输入城市名称查询未来7天天气预报:");
String city = scanner.next();
WeatherUtils weatherUtils = new WeatherUtilsImpl();
List<DayWeather> weatherList = weatherUtils.w7d("811c218772da47f28834cc6a6a50ce41", city);//输入自己的api应用程序编程接口
System.out.println(weatherList.size());
if (weatherList.size() == 0) {
System.out.println("抱歉,未收录您查询的城市天气数据。");
} else {
for (DayWeather weather : weatherList) {
String template = "%-2s月%-2s日 | 气温: %s℃(日) %s℃(夜) | 天气: %s(日) %s(夜) | 风力: %s(日) %s(夜)";
String row = String.format(template, new String[]{
weather.getMonth(),
weather.getDay(),
weather.getDayAirTemperature(),
weather.getNightAirTemperature(),
weather.getDayWeather(), weather.getNightWindPower()
});
System.out.println(row);
}
}
}
}}
运行结果在上面