JAVA上机小程序

合集下载

Java程序设计——01简介

Java程序设计——01简介

赵志崑
感谢!
本课程全部ppt和源代码可以从“网上课堂”下 载
赵志崑
计算机科学与技术学院 赵志崑 zhaozk@
Java语言简介
• Java语言是由Sun公司创造和发展的一门程序设计语言,在 程序设计语言家族中占有重要地位。 • 使用Java语言的Java平台,应用领域非常广泛,覆盖了桌 面、 Internet、企业、嵌入式设备、移动设备等。
Java语言的特点
• 简单:语法类似C++;基础解释器和类40KB。 • 面向对象:一切皆是对象。 • 可移植性、中立体系结构:一致的数据类型大小,一致的 界面风格,不依赖于特定处理器和操作系统。 • 解释型:Java字节码文件在虚拟机上解释执行。 • 动态性:动态类加载、反射机制。 • 分布式:易于使用TCP/IP协议、URL资源、远程方法调用 RMI。 • 多线程:多线程处理非常简单。 • 高性能:即时编译—JIT。 • 健壮性:编译器早期错误检查、虚拟机后期动态检查。 • 安全:异常处理机制和安全机制,可以防止堆栈溢出、访 问进程空间外内存、Applet访问本地文件。 赵志崑
赵志崑
授课方式
• 课堂讲解
– 语言的原理与机制。 – 代表性的例子。
• 课后作业
– 每部分一道程序设计题目,上机完成。 – 实验课上随机抽查程序完成情况。 – 重点题目要求写出实验报告,全体上交。
• 其它
– 课后可在教师休息室答疑,有问题和建议可通过 Email联系。
赵志崑
考核方式
• 平时成绩(10%)
Base Class Library
Common Language Runtime Windows COM+ Services 赵志崑

[整理版]java面向对象上机

[整理版]java面向对象上机

1、已知长方形的长和宽,计算面积(并验证是不是正方形);2、编写程序输入5学生的姓名和年龄并打印出来,同时求出平均年龄。

3、编写学生成绩单程序,可以从键盘读取下列各项,1、学生姓名2、学科编号3、学生成绩(假设有4门课),此程序应显示考试分数,由于计算和显示5个学科的总分和平均分;1、编写一个程序,使用带参数的构造函数和一个方法显示两个整数的值。

创建两个对象,分别传递值集(10,20)和(30,40)。

重载+操作符,将这两个对象的两个x值和两个y值相加,形成一个新对象(x,y)2、编写一个方法重载的程序,定义两个同名的重载方法,一个方法只接受整数参数a,整数参数b;另一个方法接受小数参数a,整数参数b,并且都返回a的b次幂。

3、编写一个程序,用于模拟银行账户的基本操作,如为初始余额赋值,存取现金操作以及使用任意方式修改余额后都可以随时查看账户余额。

请用重载的带参数的构造函数4、以一教研室的环境为例,这里包括学生、教授还有职员。

对这些人员分别划分类层次,定义并实现相应的类。

学生:姓名、年龄、身份证号码、学号、年级、所属的导师(即就是由哪个导师带课题设计)职员:姓名、年龄、身份证号码、薪水。

教授:姓名、年龄、身份证号码、薪水、研究课题方向。

5、定义一个人员类Cperson,包括数据成员:姓名,编号,性别,用于输入输出的成员函数,在此基础上派生出学生类Cstudent(增加成绩)和教师类Cteacher(增加教龄),并实现对学生和信息的输入和输出。

6、定义一个字符串类Cstrone,包含一格存放字符串的数据成员,能够通过构造函数初始化字符串,通过成员函数显示字符串内容,在此基础上,派生出Cstrtwo类,增加一个存放字符串的数据成员,并能通过派生类的构造函数传递参数初始化两个字符串,通过成员函数进行两个字符串的合并以及输出7、把定义平面直角坐标系的一个点的类Cpoint作为基类,派生出描述一条之间的类Line,再派生出一格矩形类,要求成员函数能求出两点间的距离,矩形的周长和面积。

java日历小程序

java日历小程序

java日历小程序简介:Java日历小程序是一个基于Java语言开发的工具,用于显示和管理日期和时间。

它提供了一种简单而直观的方式来查看、创建和编辑日历事件,并提供了一些额外的功能,如提醒、重复事件和时间段的计算等。

本文将详细介绍Java日历小程序的功能、使用方法和设计原理。

功能:1. 显示日历:Java日历小程序可以显示当前月份的日历,并以日、周或月的形式展示。

用户可以通过界面上的上下翻页按钮切换月份,方便查看不同日期的日历。

2. 创建和编辑事件:用户可以通过Java日历小程序创建新的日历事件,并为每个事件指定标题、日期、时间和地点等详细信息。

程序还提供了事件编辑功能,允许用户修改已有事件的信息。

3. 提醒功能:Java日历小程序可以设置事件的提醒功能,提醒用户在指定的时间前提醒。

用户可以选择在事件开始前几分钟、几小时或几天提醒,并可以自定义提醒方式,如弹窗、声音或邮件通知等。

4. 重复事件:用户可以为事件设置重复功能,使事件在指定的日期间隔内重复发生。

可以选择每天、每周、每月或每年重复,并可以设置重复的结束日期。

5. 时间段计算:Java日历小程序可以计算两个日期之间的时间段,如计算两个事件之间的天数、小时数或分钟数等。

用户可以选择计算方式,并获取精确的时间段结果。

使用方法:1. 下载和安装:用户可以从官方网站上下载Java日历小程序的安装包,然后按照安装向导进行安装。

安装完成后,用户可以在桌面或开始菜单中找到程序的快捷方式。

2. 打开程序:双击程序的快捷方式,Java日历小程序将启动并显示当前月份的日历。

用户可以通过界面上的按钮和菜单来使用各种功能。

3. 创建事件:用户可以点击界面上的“添加事件”按钮,弹出一个对话框,输入事件的详细信息,如标题、日期、时间和地点等。

点击“确定”按钮后,事件将被创建并显示在日历上。

4. 编辑事件:用户可以在日历上点击已有的事件,弹出一个对话框,允许用户修改事件的信息。

微信小程序的加密与解密--java

微信小程序的加密与解密--java

微信⼩程序的加密与解密--java 可能是微信认为java 对称加密算法做的⽐较好。

没有给出java的例⼦。

微信签名加密:利⽤最简单的AES加密⽅式关键代码:public static String encode(String str) {if (str == null) {return null;}try {MessageDigest messageDigest = MessageDigest.getInstance("SHA1");messageDigest.update(str.getBytes("UTF-8"));return getFormattedText(messageDigest.digest());} catch (Exception e) {throw new RuntimeException(e);}} 微信解密⽅式: 需要密钥,需要偏移量关键代码:/*** AES解密** @param content 密⽂* @return* @throws InvalidAlgorithmParameterException* @throws NoSuchProviderException*/public static byte[] decrypt(byte[] content, byte[] keyByte, byte[] ivByte) throws InvalidAlgorithmParameterException {try {Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");SecretKeySpec sKeySpec = new SecretKeySpec(keyByte, "AES");cipher.init(Cipher.DECRYPT_MODE, sKeySpec, generateIV(ivByte));byte[] result = cipher.doFinal(content);return result;} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}return null;}整个类:package mon.util;import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.JSONObject;import mons.codec.binary.Base64;import javax.crypto.Cipher;import javax.crypto.spec.IvParameterSpec;import javax.crypto.spec.SecretKeySpec;import java.security.AlgorithmParameters;import java.security.InvalidAlgorithmParameterException;import java.security.MessageDigest;import java.security.NoSuchProviderException;/*** @author zhongzheng664* @date 2018/9/26.*/public class Sha1Utils {private static final char[] HEX_DIGITS = {'0', '1', '2', '3', '4', '5', '6','7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};/*** 把密⽂转换成⼗六进制的字符串形式* @param bytes* @return⼗六进制的字符串*/private static String getFormattedText(byte[] bytes) {int len = bytes.length;StringBuilder buf = new StringBuilder(len * 2);// 把密⽂转换成⼗六进制的字符串形式for (int j = 0; j < len; j++) {buf.append(HEX_DIGITS[(bytes[j] >> 4) & 0x0f]);buf.append(HEX_DIGITS[bytes[j] & 0x0f]);}return buf.toString();}public static String encode(String str) {if (str == null) {return null;}try {MessageDigest messageDigest = MessageDigest.getInstance("SHA1");messageDigest.update(str.getBytes("UTF-8"));return getFormattedText(messageDigest.digest());} catch (Exception e) {throw new RuntimeException(e);}}/*** AES解密** @param content 密⽂* @return* @throws InvalidAlgorithmParameterException* @throws NoSuchProviderException*/public static byte[] decrypt(byte[] content, byte[] keyByte, byte[] ivByte) throws InvalidAlgorithmParameterException {try {Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");SecretKeySpec sKeySpec = new SecretKeySpec(keyByte, "AES");cipher.init(Cipher.DECRYPT_MODE, sKeySpec, generateIV(ivByte));byte[] result = cipher.doFinal(content);return result;} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}return null;}// ⽣成ivpublic static AlgorithmParameters generateIV(byte[] iv) throws Exception {AlgorithmParameters params = AlgorithmParameters.getInstance("AES");params.init(new IvParameterSpec(iv));return params;}public static void main(String[] agrs) {String str = "{\"nickName\":\"Band\",\"gender\":1,\"language\":\"zh_CN\",\"city\":\"Guangzhou\",\"province\":\"Guangdong\",\"country\":\"CN\",\"avatarUrl\":\"/mmopen/vi_32/1vZvI39NWFQ9XM4LtQpFrQJ1xlgZxx3w7bQxKAR //微信加密String encode = encode(str);String session_key = "HyVFkGl5F5OQWJZZaNzBBg==";String appId = "wx4f4bc4dec97d474b";String encryptedData = "CiyLU1Aw2KjvrjMdj8YKliAjtP4gsMZMQmRzooG2xrDcvSnxIMXFufNstNGTyaGS9uT5geRa0W4oTOb1WT7fJlAC+oNPdbB+3hVbJSRgv+4lGOETKUQz6OYStslQ142dNCuabNPGBzlooOmB231qMM85d2/fV6ChevvX String sessionKey = "tiihtNczf5v6AKRyjwEUhQ==";String iv = "r7BXXKkLb8qrSNn05n0qiA==";System.out.println(encode);try {byte[] resultByte=decrypt(Base64.decodeBase64(encryptedData),Base64.decodeBase64(sessionKey),Base64.decodeBase64(iv));String jsonStr=new String(resultByte, "utf-8");//字符串转jsonJSONObject jsonObject= JSON.parseObject(jsonStr);System.out.println(new String(resultByte, "utf-8"));} catch (Exception e) {e.printStackTrace();}}}View Code。

java微信小程序步数encryptedData和开放数据解密的实现

java微信小程序步数encryptedData和开放数据解密的实现

java微信⼩程序步数encryptedData和开放数据解密的实现前提:三个参数,1.sessionKey(拿openId的时候可以得到)2.encryptedData(前端提供)3.iv(前端提供)⼀个类,⼀个⽅法。

1.类:import java.nio.charset.Charset;import java.util.Arrays;/*** 微信⼩程序加解密* @author liuyazhuang**/public class WxPKCS7Encoder {private static final Charset CHARSET = Charset.forName("utf-8");private static final int BLOCK_SIZE = 32;/*** 获得对明⽂进⾏补位填充的字节.** @param count* 需要进⾏填充补位操作的明⽂字节个数* @return 补齐⽤的字节数组*/public static byte[] encode(int count) {// 计算需要填充的位数int amountToPad = BLOCK_SIZE - (count % BLOCK_SIZE);if (amountToPad == 0) {amountToPad = BLOCK_SIZE;}// 获得补位所⽤的字符char padChr = chr(amountToPad);String tmp = new String();for (int index = 0; index < amountToPad; index++) {tmp += padChr;}return tmp.getBytes(CHARSET);}/*** 删除解密后明⽂的补位字符** @param decrypted* 解密后的明⽂* @return 删除补位字符后的明⽂*/public static byte[] decode(byte[] decrypted) {int pad = decrypted[decrypted.length - 1];if (pad < 1 || pad > 32) {pad = 0;}return Arrays.copyOfRange(decrypted, 0, decrypted.length - pad);}/*** 将数字转化成ASCII码对应的字符,⽤于对明⽂进⾏补码** @param a* 需要转化的数字* @return 转化得到的字符*/public static char chr(int a) {byte target = (byte) (a & 0xFF);return (char) target;}}2.⽅法:import java.io.UnsupportedEncodingException;import java.security.AlgorithmParameters;import java.security.InvalidAlgorithmParameterException;import java.security.InvalidKeyException;import java.security.NoSuchAlgorithmException;import java.security.Security;import java.security.spec.InvalidParameterSpecException;import java.util.HashMap;import javax.annotation.Resource;import javax.crypto.BadPaddingException;import javax.crypto.Cipher;import javax.crypto.IllegalBlockSizeException;import javax.crypto.NoSuchPaddingException;import javax.crypto.spec.IvParameterSpec;import javax.crypto.spec.SecretKeySpec;import mons.codec.binary.Base64;import ng3.StringUtils;import org.bouncycastle.jce.provider.BouncyCastleProvider;import lombok.extern.slf4j.Slf4j;@Slf4jpublic class AesCbcUtil {static {//BouncyCastle是⼀个开源的加解密解决⽅案,主页在/Security.addProvider(new BouncyCastleProvider());}/*** AES解密** @param data //密⽂,被加密的数据* @param key //秘钥* @param iv //偏移量* @param encodingFormat //解密后的结果需要进⾏的编码* @param type //0 是其他 1是微信步数* @return* @throws Exception*/public static String decrypt(String data, String key, String iv, String encodingFormat,Integer type) throws Exception { // initialize();if(StringUtils.isEmpty(data)||StringUtils.isEmpty(key)||StringUtils.isEmpty(iv))throw new SkyParamNullException("⼩程序获取⽤户信息参数不能为空");//被加密的数据byte[] dataByte = Base64.decodeBase64(data);//加密秘钥byte[] keyByte = Base64.decodeBase64(key);//偏移量byte[] ivByte = Base64.decodeBase64(iv);try {Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding");SecretKeySpec spec = new SecretKeySpec(keyByte, "AES");AlgorithmParameters parameters = AlgorithmParameters.getInstance("AES");parameters.init(new IvParameterSpec(ivByte));cipher.init(Cipher.DECRYPT_MODE, spec, parameters);// 初始化byte[] resultByte = cipher.doFinal(dataByte);if (null != resultByte && resultByte.length > 0) {if (type==1){return new String(WxPKCS7Encoder.decode(resultByte));}else {return new String(resultByte, encodingFormat);}}return null;} catch (NoSuchAlgorithmException e) {e.printStackTrace();log.error("⼩程序解析出错1{}",e.getMessage());} catch (NoSuchPaddingException e) {e.printStackTrace();log.error("⼩程序解析出错2{}",e.getMessage());} catch (InvalidParameterSpecException e) {e.printStackTrace();log.error("⼩程序解析出错3{}",e.getMessage());} catch (InvalidKeyException e) {e.printStackTrace();log.error("⼩程序解析出错4{}",e.getMessage());} catch (InvalidAlgorithmParameterException e) {e.printStackTrace();log.error("⼩程序解析出错5{}",e.getMessage());} catch (IllegalBlockSizeException e) {e.printStackTrace();log.error("⼩程序解析出错6{}",e.getMessage());} catch (BadPaddingException e) {e.printStackTrace();log.error("⼩程序解析出错7{}",e.getMessage());}catch (UnsupportedEncodingException e) {e.printStackTrace();log.error("⼩程序解析出错8{}",e.getMessage());}return null;}}实现@ApiOperation(value = "wx步数解密")@PostMapping(value = "/decode")public ResultModel<Object> questionList(@RequestBody WxSportParam param) throws Exception {HashMap<String, Object> map = wxXiaoChenXuUtil.getWxOpenId(//这个⽅法⽹上很多,没有就⽤binarywang的param.getCode()//前端提供的code,sysProperties.getWxAppId()//appID,sysProperties.getWxAppSecret());//secretString sessionKey = map.get("session_key").toString();String result = AesCbcUtil.decrypt(param.getData(), sessionKey,param.getIv(), "UTF-8",1);return ResultModel.success(result);}出来的数据:{ “stepInfoList”: [{“timestamp”: 1445866601,“step”: 100},{“timestamp”: 1445876601,“step”: 120} ] }tips:如果是解析⽤户信息的话⼀样的⽤法,解密decrypt中参数type传0。

JAVA课程设计----计算器小程序报告共13页文档

JAVA课程设计----计算器小程序报告共13页文档

#####学院JA V A语言课程设计报告小程序计算器系统管理班级:#######姓名:###指导老师:###时间:2012年6月25日至6月29日目录1、课程设计概述--------------------------------------------------31.1利用java编写计算器,使之具备一定的功能:-----------------31.2 课程设计的主要思想--------------------------------------------------31.3 该项目设计的目的-----------------------------------------------------32、需求分析方案--------------------------------------------------42.1功能需求分析-----------------------------------------------42.2 性能需求分析-----------------------------------------------43、总体设计方案--------------------------------------------------53.1界面设计----------------------------------------------------------------------53.2功能介绍-----------------------------------------------------------------------54、详细说明、调试---------------------------------------------64.1程序流程图-------------------------------------------------------64.2部分代码说明-----------------------------------------------------64.3程序调试与结果示例-------------------------------------------85、个人总结-----------------------------------------------------106、附录(代码)-----------------------------------------------116.1登陆界面代码--------------------------------------------116.2计算器主界面--------------------------------------------126.3 退出界面代码-------------------------------------------151.课程设计概述1.1利用java编写计算器,使之具备一定的功能:(1)使用图形用户界面:一个文本框;0-9数字按钮;加、减、乘、除运算符;“等于”符号;复位按钮;(2)完成整数、实数的四则运算(加、减、乘、除);(3)通过按钮点击实现数据的复位(清零);(4)实数运算中小数位的精度一致。

Java语言上机指导书

《互联网软件应用与开发》实验指导书目录一、Java语言实验机器与环境 (1)(一)计算机的硬件配置 (1)(二)计算机的软件配置 (1)二、JDK1.3.1的安装和设置 (1)(一)下载JDK1.3.1 (1)(二)安装JDK1.3.1 (1)(三)配置环境变量 (6)(四)测试安装 (7)三、JDK开发工具简介 (7)四、Java程序开发步骤 (7)(一)编辑 (8)(二)编译 (8)(三)运行 (8)五、上机实验 (8)实验1:学会简单的开发 (8)1.实验目的 (8)2.实验内容 (9)实验2:Java程序控制 (10)1.实验目的 (10)2.实验内容 (10)实验3:由键盘输入数据 (12)1.实验目的 (12)2.实验内容 (12)实验4:类与方法 (13)1.实验目的 (13)2.实验内容 (13)实验5:一个实用的Java Applet (14)1.实验目的 (14)2.实验内容 (15)实验6:多线程与异常处理 (16)1.实验目的 (16)2.实验内容 (16)一、Java语言实验机器与环境(一)计算机的硬件配置PC系列微机,包括286、386、486、奔腾及各种兼容机,要求内存为64M 以上,一个硬盘驱动器和一个软盘驱动器。

80列字符监视器。

配备鼠标器。

(二)计算机的软件配置DOS6.22或Windows 98、Windows xp、Windows 2000。

JDK1.3.1的安装软件j2sdk-1_3_1_02-win.exe二、JDK1.3.1的安装和设置(一)下载JDK1.3.1JDK开发工具包可以免费下载。

下载网址——/product下载如下文件:j2sdk-1_3_1_02-win.exe。

(二)安装JDK1.3.1由于目前大多数用户使用的是Window 98 操作系统,所以我们以在Window 98 操作系统上安装JDK1.3.1为例,说明安装JDK1.3.1的过程。

java小程序试验报告

实验报告一、实验内容小程序可以实现让你在文本框里面输入一个你猜的数字,然后点击按钮可以产生一个随机数字,状态栏可以判断你是否猜中了随机数字,并统计你猜的次数。

是一款用来拼人品的程序。

效果截图:二源代码package ja\raapplicati(>nl;import jwa.iiwt.*;import java.applct.Applet;import jaya.awt.event』;import jiiya.applct *;public class gucssnumbcr extends jaxni.applct Applet implements Acti()nListcncr^//t^S??DLabel L;TcxtFicld T;Button b;boolean A=falsc; //定义变重int i=0;public void initO {L=n^ SbeQ输入你猜的数宇T=ncw TcxtFicld(2);b=n^ ButtonC产主一个0~6的随机数J;〃初贴化变重add(L);:idd ①;add(b);//添加元件b.addActi()nListcncr(this);//i^ fit 按监听者}public void actionPcrfir)rmcd(AcuonEvtnt e){〃编辑接口if(c.gctActionComm;mdO==M产主一个0~6 的随机数J{A=truc;i++;}〃判断按钮被点击,点击就赋予A其实值,面板就输出,旦i自加一,用来计算次数showSutus(-n);//iW 空状态栏rcpaintO;/ /刷新页面public void paint(Graphics g){int x=Intcgcr.parsclni<r.gctTcxtO);//将文本tl里面输入的文宇斥予x变量int r=(int)(Math.randomO*6);// 产生一个随机敎if(x>=f)&&x v=6) {if(A){g.drawSmngC随机敎为:”+「100,100);if(x>r){showSutusf抱歉,你的散宇大了,没有詹中,清维续措!}clscif(x==r){showStotusC恭喜你,你詹中了!你总共猜了Ui+“次!J;} gshowSutusC*抱歉,你的教宇小了,没有詹中!°;}//状态栏判斷你是否猜中了,倩中了并显示借的次教}} else shcwSbii-usf你输入的敎宇有误,谱揄入Of之间的整敌!J;〃判断文本框里面输入的敖宇是否台法if仗==「){g.sctC<)l<)r(C<)l<)r.rcd);if0==l){g.drawStringC你的人品其是太奸了,一詹就中,肯定经常扶老奶奶过马路3 25,120);}if(i>=2&&!<=3){g.drawStringC^的人品不错哟,看来没有少做好事!",25,120);}if(i>=4&&!<=6){g.drawStringC'T^哟,你的人品还凑活,不会倒大粵!”,25,120);} if(i>6){g.dr:对String("这都借了这么久,看来你得名家做做好事来橫个奸人品明!”25,120);} } 〃面板上揄出对人品的评语}}三、总结该程序使用了按钮以尺事件监听的知识,还用了随机数,因为没怎么使用随机数的方法,所以还去gi里面去找了能返回随机数的方法。

Java小程序连连看源代码

Java小程序连连看源代码Java 连连看import javax.swing.*;import java.awt.*;import java.awt.event.*;public class lianliankan implements ActionListener{JFrame mainFrame; //主面板Container thisContainer;JPanel centerPanel,southPanel,northPanel; //子面板JButton diamondsButton[][] = new JButton[6][5];//游戏按钮数组JButton exitButton,resetButton,newlyButton; //退出,重列,重新开始按钮JLabel fractionLable=new JLabel("0"); //分数标签JButton firstButton,secondButton; //分别记录两次被选中的按钮int grid[][] = new int[8][7];//储存游戏按钮位置static boolean pressInformation=false; //判断是否有按钮被选中int x0=0,y0=0,x=0,y=0,fristMsg=0,secondMsg=0,validateLV; //游戏按钮的位置坐标int i,j,k,n;//消除方法控制public void init(){mainFrame=new JFrame("JKJ连连看");thisContainer = mainFrame.getContentPane();thisContainer.setLayout(new BorderLayout());centerPanel=new JPanel();southPanel=new JPanel();northPanel=new JPanel();thisContainer.add(centerPanel,"Center");thisContainer.add(southPanel,"South");thisContainer.add(northPanel,"North");centerPanel.setLayout(new GridLayout(6,5));for(int cols = 0;cols < 6;cols++){for(int rows = 0;rows < 5;rows++ ){diamondsButton[cols][rows]=newJButton(String.valueOf(grid[cols+1][rows+1]));diamondsButton[cols][rows].addActionListener(this);centerPanel.add(diamondsButton[cols][rows]);}}exitButton=new JButton("退出");exitButton.addActionListener(this);resetButton=new JButton("重列");resetButton.addActionListener(this);newlyButton=new JButton("再来一局");newlyButton.addActionListener(this);southPanel.add(exitButton);southPanel.add(resetButton);southPanel.add(newlyButton);fractionLable.setText(String.valueOf(Integer.parseInt(fraction Lable.getText())));northPanel.add(fractionLable);mainFrame.setBounds(280,100,500,450);mainFrame.setVisible(true);}public void randomBuild() {int randoms,cols,rows;for(int twins=1;twins<=15;twins++) {randoms=(int)(Math.random()*25+1);for(int alike=1;alike<=2;alike++) {cols=(int)(Math.random()*6+1);rows=(int)(Math.random()*5+1);while(grid[cols][rows]!=0) {cols=(int)(Math.random()*6+1);rows=(int)(Math.random()*5+1);}this.grid[cols][rows]=randoms;}}}public void fraction(){fractionLable.setText(String.valueOf(Integer.parseInt(fraction Lable.getText())+100));}public void reload() {int save[] = new int[30];int n=0,cols,rows;int grid[][]= new int[8][7];for(int i=0;i<=6;i++) {for(int j=0;j<=5;j++) {if(this.grid[i][j]!=0) {save[n]=this.grid[i][j];n++;}}}n=n-1;this.grid=grid;while(n>=0) {cols=(int)(Math.random()*6+1);rows=(int)(Math.random()*5+1);while(grid[cols][rows]!=0) {cols=(int)(Math.random()*6+1);rows=(int)(Math.random()*5+1);}this.grid[cols][rows]=save[n];n--;}mainFrame.setVisible(false);pressInformation=false; //这里一定要将按钮点击信息归为初始init();for(int i = 0;i < 6;i++){for(int j = 0;j < 5;j++ ){if(grid[i+1][j+1]==0)diamondsButton[i][j].setVisible(false);}}}public void estimateEven(int placeX,int placeY,JButton bz) { if(pressInformation==false) {x=placeX;y=placeY;secondMsg=grid[x][y];secondButton=bz;pressInformation=true;}else {x0=x;y0=y;fristMsg=secondMsg;firstButton=secondButton;x=placeX;y=placeY;secondMsg=grid[x][y];secondButton=bz;if(fristMsg==secondMsg && secondButton!=firstButton){ xiao();}}}public void xiao() { //相同的情况下能不能消去。

微信小程序客服消息新增临时素材接口java实现

微信⼩程序客服消息新增临时素材接⼝java实现今天想在微信⼩程序的客服信息窗⼝⾥回复⽤户⼀个图⽚信息,发现还需要上传素材,但是微信⽂档的上传临时素材接⼝写的模模糊糊,⽆奈去百度,⽹上清⼀⾊的PHP实现⽅式,难道我穿越了?PHP已经把java给超越了?⾔归正传,终于还是找到了⼀篇博客的,java实现。

现摘录如下,做了⼩部分修改:1/**2 * 新增临时素材3 *4 * @param fileType5 * @param filePath6 * @return7 * @throws Exception8*/9public static JSONObject UploadMeida(String fileType, String filePath) throws Exception {10// 返回结果11 String result = null;12 File file = new File(filePath);13if (!file.exists() || !file.isFile()) {14 ("⽂件不存在");15throw new IOException("⽂件不存在");16 }17 String token = getToken();18if (token == null) {19 ("未获取到token");20throw new IOException("未获取到token");21 }22 String urlString = Constants.WX_APP_MEDIA_UPLOAD.replace("ACCESS_TOKEN", token).replace("TYPE", fileType);23 URL url = new URL(urlString);24 HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();25 conn.setRequestMethod("POST");// 以POST⽅式提交表单26 conn.setDoInput(true);27 conn.setDoOutput(true);28 conn.setUseCaches(false);// POST⽅式不能使⽤缓存29// 设置请求头信息30 conn.setRequestProperty("Connection", "Keep-Alive");31 conn.setRequestProperty("Charset", "UTF-8");32// 设置边界33 String BOUNDARY = "----------" + System.currentTimeMillis();34 conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + BOUNDARY);35// 请求正⽂信息36// 第⼀部分37 StringBuilder sb = new StringBuilder();38 sb.append("--");// 必须多两条道39 sb.append(BOUNDARY);40 sb.append("\r\n");41 sb.append("Content-Disposition: form-data;name=\"media\"; filename=\"" + file.getName() + "\"\r\n");42 sb.append("Content-Type:application/octet-stream\r\n\r\n");43 logger.debug("sb:" + sb);4445// 获得输出流46 OutputStream out = new DataOutputStream(conn.getOutputStream());47// 输出表头48 out.write(sb.toString().getBytes("UTF-8"));49// ⽂件正⽂部分50// 把⽂件以流的⽅式推送道URL中51 DataInputStream din = new DataInputStream(new FileInputStream(file));52int bytes = 0;53byte[] buffer = new byte[1024];54while ((bytes = din.read(buffer)) != -1) {55 out.write(buffer, 0, bytes);56 }57 din.close();58// 结尾部分59byte[] foot = ("\r\n--" + BOUNDARY + "--\r\n").getBytes("UTF-8");// 定义数据最后分割线60 out.write(foot);61 out.flush();62 out.close();63if (HttpsURLConnection.HTTP_OK == conn.getResponseCode()) {6465 StringBuffer strbuffer = null;66 BufferedReader reader = null;67try {68 strbuffer = new StringBuffer();69 reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));70 String lineString = null;71while ((lineString = reader.readLine()) != null) {72 strbuffer.append(lineString);7374 }75if (result == null) {76 result = strbuffer.toString();77 ("result:" + result);78 }79 } catch (IOException e) {80 logger.error("发送POST请求出现异常!", e);81 e.printStackTrace();82 } finally {83if (reader != null) {84 reader.close();85 }86 }8788 }89 JSONObject jsonObject = JSONObject.parseObject(result);90return jsonObject;9192 }使⽤的时候直接本地执⾏⼀个main⽅法就OK的1/**2 * 上传素材,⽤于获取media_id3 * @param args4*/5public static void main(String[] args) {67 String fileType = "image";8 String filePath = "E:/testupload/123456.jpg";9try {10 JSONObject jsonObject = UploadMeida(fileType, filePath);11 System.err.println(jsonObject);12 } catch (Exception e) {13 e.printStackTrace();14 }15 }其实后来这个临时素材不满⾜需求的,因为⽹上说的这种临时素材好像3天就会过期,反正微信⽂档是啥也没说,只说这是临时素材,囧!我想找个微信⼩程序的永久素材接⼝,然⽽并没有找到。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

JAVA上机作业(9.10-11.5) 1. 1-1/3+1/5-1/7···的前10000项的运算结果 方法一: public class Sum { static int END = 10000; public static void main(String args[]) { double sum = 0.0; for (double i = 0.0; i < END; i++) { if (i % 2 == 0) { sum += 1/(2*i + 1); } else { sum -= 1/(2*i + 1); } } System.out.println(sum); } } 方法二: class Example { public static void main (String args[]) { double x=1,y=1,z=1,sum=0; int i=1; for(i=1;i<=10000;i++) { z=x/y; sum=sum+z; x=-x; y=y+2; } System.out.println(sum); } } 2. 猜数 方法一: import java.util.*; public class Number { public static void main(String args[]) { Scanner reader=new Scanner(System.in); int m=(int)(Math.random()*100)+1; int n=reader.nextInt(); int min=1,max=100; while(n!=m) { if(n>m) { max=n; System.out.println("范围在"+min+"和"+max+"之间"); } if(n{ min=n; System.out.println("范围在"+min+"和"+max+"之间"); } n=reader.nextInt(); } System.out.println("恭喜你,猜对了"); } } 方法二: import java.util.*; class Example { public static void main(String args[]) { int realNumber,yourGuess,max,min; realNumber=(int)(Math.random()*100)+1; min=1; max=100; Scanner reader=new Scanner(System.in); yourGuess=reader.nextInt(); while(true) { if(yourGuess==realNumber) { System.out.println("猜对了"); break; } else if(yourGuess>realNumber&&yourGuess{ max=yourGuess; } else if(yourGuessmin) { min=yourGuess; } System.out.println(min+"-"+max); yourGuess=reader.nextInt(); } } } 3. 构造分数 public class fs { private int fz; private int fm; public fs() { } public fs(int fz,int fm) { this.fz=fz; this.fm=fm; } public int getfz() { return fz; } public void setfz(int fz) { this.fz= fz; } public int getfm() { return fm; } public void setfm(int fm) { this.fm = fm; } public String toString() { return fz+"/"+fm; } public fs add(fs x) { int fz=this.getfz()*x.fm+x.getfz()*this.fm; int fm=this.getfm()*x.getfm(); return new fs(fz,fm); } public fs sub(fs x) { int fz=this.getfz()*x.fm-x.getfz()*this.fm; int fm=this.getfz()*x.getfm(); return new fs(fz,fm); } } class Example { public static void main (String[] args) { fs fs_a=new fs(1,3); fs fs_b=new fs(1,2); System.out.println(fs_a.add(fs_b)); System.out.println(fs_a.sub(fs_b)); } } 4. 求体积 正方体 class cube { double x; cube(double a) { x=a; } double getvolume() { return x*x*x; } } public class example { public static void main(String args[]) { cube one=new cube(10); double volume; volume=one.getvolume(); System.out.println(volume); } } 立方体 class cube { double x,y,z; cube(double a,double b,double c) { x=a; y=b; z=c; } double getvolume() { return x*y*z; } } public class example { public static void main(String args[]) { cube one=new cube(10,12,14); double volume; volume=one.getvolume(); System.out.println(volume); } } 5. 设计一个平面坐标系中的点MyPoint类,它仅包含两个属性:横坐标和纵坐标,以及构造方法和移动坐标、返回坐标的方法,重写toString()返回点的横纵坐标。使用MyPoint类派生出圆MyCircle类,继承的点类描述圆的圆心,MyCircle类还用包括半径作为属性,有参和无参构造方法,设置半径和修改半径,计算面积和周长等方法,重写toString()返回点的横纵坐标和半径的字符串形式,并编写主程序演示该类的用法。 public class MyPoint { private double x,y; public MyPoint() { } public MyPoint(double a,double b) { x=a; y=b; } void setx(double a) { x=a; } void sety(double b) { y=b; } double getx() { return x; } double gety() { return y; } public String toString() { return x+","+y; } } class example1 { public static void main(String []args) { MyPoint one=new MyPoint(10,5); System.out.println(one.toString()); } } public class Circle extends MyPoint { protected double r; public Circle( ) { super( ); } public Circle ( double r ) { super(); this.r=r; }

相关文档
最新文档