java写的未来6天的天气预报

2024-05-12 14:38
文章标签 java 未来 天气预报

本文主要是介绍java写的未来6天的天气预报,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


最近写的一个java程序,

    需求:获取未来6天的天气预报,条用中央气象台API来实现的

      有兴趣的同学可以,参考一下:代码如下

package com.xuan.service;import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.SocketTimeoutException;
import java.net.URL;
import java.net.URLConnection;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;import net.sf.json.JSONObject;public class Weather {private String Cityid;private URLConnection connectionData;private StringBuilder sb;private BufferedReader br;// 读取data数据流 private JSONObject jsonData; private JSONObject info; public Weather(String cityid) throws IOException{///解析本机IP地址this.Cityid=cityid;///连接中央气象台的APiURL url=new URL("http://m.weather.com.cn/data/" + Cityid + ".html");connectionData = url.openConnection(); connectionData.setConnectTimeout(1000); try { br = new BufferedReader(new InputStreamReader(connectionData.getInputStream(), "UTF-8")); sb = new StringBuilder(); String line = null; while ((line = br.readLine()) != null){sb.append(line); }} catch (SocketTimeoutException e) { System.out.println("连接超时"); } catch (FileNotFoundException e) { System.out.println("加载文件出错"); }   String datas = sb.toString();   jsonData = JSONObject.fromObject(datas); //  System.out.println(jsonData.toString());  info = jsonData.getJSONObject("weatherinfo"); //得到1到6天的天气情况List<Map<String,Object>> list =new ArrayList<Map<String,Object>>();for(int i=1;i<=6;i++){//得到未来6天的日期Calendar cal = Calendar.getInstance();cal.add(Calendar.DAY_OF_YEAR, i-1);Date date = cal.getTime();SimpleDateFormat sf = new SimpleDateFormat("yyyy年MM月dd日");Map<String,Object> map = new HashMap<String, Object>();map.put("city", info.getString("city").toString());//城市map.put("date_y", sf.format(date));//日期map.put("week", getWeek(cal.get(Calendar.DAY_OF_WEEK)));//星期map.put("fchh", info.getString("fchh").toString());//发布时间map.put("weather", info.getString("weather"+i).toString());//天气map.put("temp", info.getString("temp"+i).toString());//温度map.put("wind", info.getString("wind"+i).toString());//风况map.put("fl", info.getString("fl"+i).toString());//风速map.put("index", info.getString("index").toString());// 今天的穿衣指数 map.put("index_uv", info.getString("index_uv").toString());// 紫外指数 map.put("index_tr", info.getString("index_tr").toString());// 旅游指数 map.put("index_co", info.getString("index_co").toString());// 舒适指数 map.put("index_cl", info.getString("index_cl").toString());// 晨练指数 map.put("index_xc", info.getString("index_xc").toString());//洗车指数 map.put("index_d", info.getString("index_d").toString());//天气详细穿衣指数 list.add(map);}//控制台打印出天气for(int j=0;j<list.size();j++){Map<String,Object> wMap = list.get(j);System.out.println(wMap.get("city")+"\t"+wMap.get("date_y")+"\t"+wMap.get("week")+"\t"+wMap.get("weather")+"\t"+wMap.get("temp")+"\t"+wMap.get("index_uv"));}}private String getWeek(int iw){String weekStr = "";switch (iw) {case 1:weekStr = "星期天";break;case 2:weekStr = "星期一";break;case 3:weekStr = "星期二";break;case 4:weekStr = "星期三";break;case 5:weekStr = "星期四";break;case 6:weekStr = "星期五";break;case 7:weekStr = "星期六";break;default:break;}return weekStr;}///public static void main(String[] args) { try { new Weather("101010100"); // 101010100(北京)就是你的城市代码new Weather("101280101"); // 101280101(广州)就是你的城市代码} catch (Exception e) { e.printStackTrace(); } } }/

运行效果:


这篇关于java写的未来6天的天气预报的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/982906

相关文章

idea+spring boot创建项目的搭建全过程

《idea+springboot创建项目的搭建全过程》SpringBoot是Spring社区发布的一个开源项目,旨在帮助开发者快速并且更简单的构建项目,:本文主要介绍idea+springb... 目录一.idea四种搭建方式1.Javaidea命名规范2JavaWebTomcat的安装一.明确tomcat

Java高效实现PowerPoint转PDF的示例详解

《Java高效实现PowerPoint转PDF的示例详解》在日常开发或办公场景中,经常需要将PowerPoint演示文稿(PPT/PPTX)转换为PDF,本文将介绍从基础转换到高级设置的多种用法,大家... 目录为什么要将 PowerPoint 转换为 PDF安装 Spire.Presentation fo

Java集合之Iterator迭代器实现代码解析

《Java集合之Iterator迭代器实现代码解析》迭代器Iterator是Java集合框架中的一个核心接口,位于java.util包下,它定义了一种标准的元素访问机制,为各种集合类型提供了一种统一的... 目录一、什么是Iterator二、Iterator的核心方法三、基本使用示例四、Iterator的工

SpringBoot中ResponseEntity的使用方法举例详解

《SpringBoot中ResponseEntity的使用方法举例详解》ResponseEntity是Spring的一个用于表示HTTP响应的全功能对象,它可以包含响应的状态码、头信息及响应体内容,下... 目录一、ResponseEntity概述基本特点:二、ResponseEntity的基本用法1. 创

springboot依靠security实现digest认证的实践

《springboot依靠security实现digest认证的实践》HTTP摘要认证通过加密参数(如nonce、response)验证身份,避免明文传输,但存在密码存储风险,相比基本认证更安全,却因... 目录概述参数Demopom.XML依赖Digest1Application.JavaMyPasswo

java中判断json key是否存在的几种方法

《java中判断jsonkey是否存在的几种方法》在使用Java处理JSON数据时,如何判断某一个key是否存在?本文就来介绍三种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的... 目http://www.chinasem.cn录第一种方法是使用 jsONObject 的 has 方法

Java 线程池+分布式实现代码

《Java线程池+分布式实现代码》在Java开发中,池通过预先创建并管理一定数量的资源,避免频繁创建和销毁资源带来的性能开销,从而提高系统效率,:本文主要介绍Java线程池+分布式实现代码,需要... 目录1. 线程池1.1 自定义线程池实现1.1.1 线程池核心1.1.2 代码示例1.2 总结流程2. J

Java8 Collectors.toMap() 的两种用法

《Java8Collectors.toMap()的两种用法》Collectors.toMap():JDK8中提供,用于将Stream流转换为Map,本文给大家介绍Java8Collector... 目录一、简单介绍用法1:根据某一属性,对对象的实例或属性做映射用法2:根据某一属性,对对象集合进行去重二、Du

java中ssh2执行多条命令的四种方法

《java中ssh2执行多条命令的四种方法》本文主要介绍了java中ssh2执行多条命令的四种方法,包括分号分隔、管道分隔、EOF块、脚本调用,可确保环境配置生效,提升操作效率,具有一定的参考价值,感... 目录1 使用分号隔开2 使用管道符号隔开3 使用写EOF的方式4 使用脚本的方式大家平时有没有遇到自

linux系统中java的cacerts的优先级详解

《linux系统中java的cacerts的优先级详解》文章讲解了Java信任库(cacerts)的优先级与管理方式,指出JDK自带的cacerts默认优先级更高,系统级cacerts需手动同步或显式... 目录Java 默认使用哪个?如何检查当前使用的信任库?简要了解Java的信任库总结了解 Java 信