Java 第九周总结
1. 本周学习总结

2. 书面作业
1.常用异常
1.1 截图你的提交结果(出现学号)

1.2 自己以前编写的代码中经常出现什么异常、需要捕获吗(为什么)?应如何避免?
- 以前的代码经常出现空指针的,需要捕获。能在代码编译的时候提示错误点,而且代码也会继续往下执行,不会因为这一个问题而影响到后面的内容。
1.3 什么样的异常要求用户一定要使用捕获处理?
- 用户在程序运行时触发所导致的错误,需要异常机制来捕捉和处理。
- 当前函数无法将某种状态传递到外面的时候也要用异常处理
2.处理异常使你的程序更加健壮
2.1 截图你的提交结果(出现学号)

2.2 实验总结
- 这一题的关键在于如何捕获异常之后,不会影响到正常的代码程序运行,继续之前未完成的赋值。
- 所以这里我把异常判断放在了for循环赋值的内部。如果当前赋值操作出现异常,捕获后进行处理。
- 这时的catch处理异常,然后继续执行接下来的代码,也就是for循环。那么本该在这里被赋值的数,就为0
- 所以为了能够返回当前错误赋值的位置,重新赋值,i--


3.throw与throws
3.1 截图你的提交结果(出现学号)
- 未达成预计结果,提交未通过
public class Main3 {
public static void main(String[] arge) throws IllegalArgumentException{
Scanner in= new Scanner(System.in);
int n=in.nextInt();
int[] arr=new int[n];
double[] brr=new double[n];
for(int i=0;i<n;i++){
arr[i]=in.nextInt();
}
int begin=in.nextInt();
int end=in.nextInt();
for(int i=0;i<n;i++)
brr[i]=(double)arr[i];
try{
System.out.println(ArrayUtils.findMax(brr, begin, end));
}catch(IllegalArgumentException e){
System.out.println(e);
}
}
}
class ArrayUtils{
public static double findMax(double[] arr,int begin,int end) throws IllegalArgumentException{
try{
if(begin>=end)
throw new IllegalArgumentException("begin:"+begin+">=:"+end);
else if(begin<0)
throw new IllegalArgumentException("begin:"+begin+"<0");
else if(end>arr.length)
throw new IllegalArgumentException("end:"+end+">arr.length");
/*else{
for(;arr[begin]<arr[begin=1]&&begin<end;begin++)
arr[begin]=arr[begin+1];
} */
}catch(Exception e){
}
return arr[begin];
}
}
4.函数题
4.1 截图你的提交结果(出现学号)

4.2 一个try块中如果可能抛出多种异常,捕获时需要注意些什么?
- 捕获时,要注意catch后面括号内的,如果是(Exception e)说明接受多种异常状态。
Unreachable catch block for Exception. It is already handled by the catch block for Exception
异常的catch catch块。它已经被捕获提单处理

所以,最好是为不同的异常状态做不同的处理,方便区分和捕获
另外,一旦某个catch捕获到匹配的异常类型,将进入异常处理代码。一经处理结束,就意味着整个try-catch语句结束。其他的catch子句不再有匹配和捕获异常类型的机会。
5.为如下代码加上异常处理
byte[] content = null;
FileInputStream fis = new FileInputStream("testfis.txt");
int bytesAvailabe = fis.available();//获得该文件可用的字节数
if(bytesAvailabe>0){
content = new byte[bytesAvailabe];//创建可容纳文件大小的数组
fis.read(content);//将文件内容读入数组
}
System.out.println(Arrays.toString(content));//打印数组内容
5.1 改正代码,让其可正常运行。注意:里面有多个方法均可能抛出异常
try{
byte[] content = null;
FileInputStream fis = new FileInputStream("testfis.txt");
int bytesAvailabe = fis.available();//获得该文件可用的字节数
if(bytesAvailabe>0){
content = new byte[bytesAvailabe];//创建可容纳文件大小的数组
fis.read(content);//将文件内容读入数组
}
System.out.println(Arrays.toString(content));//打印数组内容
}
catch(FileNotFoundException e){
System.out.println("文件未找到");
}
catch(IOException e){
System.out.println("文件输入有误");
}
catch(ArrayIndexOutOfBoundsException e){
System.out.println("数组越界");
}
5.2 如何使用Java7中的try-with-resources来改写上述代码实现自动关闭资源?
6.重点考核:使用异常改进你的购物车系统举至少两个例子说明你是如何使用异常机制让你的程序变得更健壮。说明要包含2个部分:1. 问题说明(哪里会碰到异常)。2.解决方案(关键代码)
package shopping;
import java.util.ArrayList;
class ShoppingCartException extends Exception
{
public ShoppingCartException(String s)
{
super(s);
}
}
public class ShoppingCart{
private static int totalnum=0;
private static double totalprice=0;
private int cnum;
private String name;
private double price;
private String category;
private int num;
public ArrayList<Goods> cart=new ArrayList<Goods>();
public ArrayList<ShoppingCart> cartlist=new ArrayList<ShoppingCart>();
Goods good;
public ShoppingCart(String category, String name, double price,int num,int cnum)throws ShoppingCartException {
setCategory(category);
setName(name);
setPrice(price);
setCnum(cnum);
setTotalprice(cnum);
setTotalnum(cnum);
good=new Goods(category,name,price ,num);
if(num<cnum) throw new ShoppingCartException("选择数量大于库存!");
cart.add(good);
}
public static void setTotalprice(double totalprice) {
ShoppingCart.totalprice = totalprice;
}
public String getCategory() {
return category;
}
public void setCategory(String category) {
this.category = category;
}
public int getCnum() {
return cnum;
}
public void setCnum(int cnum) {
this.cnum = cnum;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public int getTotalnum() {
return totalnum;
}
public void setTotalnum(int cnum) {
this.totalnum = cnum+this.totalnum;
}
public double getTotalprice() {
return totalprice;
}
public void setTotalprice(int cnum) {
this.totalprice = cnum*this.getPrice()+this.totalprice;
}
@Override
public String toString() {
return getCategory()+" 名称:" + getName() + " \t价格:" + getPrice() +" \t数量:"+cnum;
}
public static String total()
{
return "\t总价:"+totalprice+"\t\t总数:"+totalnum;
}
}
3. 码云上代码提交记录

Java 第九周总结的更多相关文章
- 20165210 Java第九周学习总结
20165210 Java第九周学习总结 教材学习内容 - 第十三章学习总结 URL类: URL的构造方法: try { URL url = new URL("http://www.goog ...
- 20145304 Java第九周学习报告
20145304<Java程序设计>第九周学习总结 教材学习内容总结 JDBC简介 JDBC全名Java DataBase Connectivity,是Java联机数据库的标准规范.定义了 ...
- JAVA 第九周学习总结
20175308 2018-2019-2 <Java程序设计>第九周学习总结 教材学习内容总结 准备工作 下载MYSQL数据库管理系统 前往MYSQL官网的下载页面,选择相应平台的MYSQ ...
- 20165326 java第九周学习笔记
第九周学习笔记 URL类 属于java.net包 最基本三部分:协议(对象所在的Java虚拟机支持).地址(能连接的有效IP地址或域名).资源(主机上的任何一个文件) 常用构造方法 public UR ...
- 201521123093 java 第九周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 本次PTA作业题集异常 1.常用异常 题目5-1 1.1 截图你的提交结果(出现学号) 1.2 自己 ...
- Java第九周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 本次PTA作业题集异常 1.常用异常 题目5-1 1.1 截图你的提交结果(出现学号) 1.2 自己 ...
- java第九周笔记
- Java第九周总结
- JAVA实验报告及第九周总结
Java第九周作业 实验报告七 实验任务详情: 完成火车站售票程序的模拟. 要求: (1)总票数1000张: (2)10个窗口同时开始卖票: (3)卖票过程延时1秒钟: (4)不能出现一票多卖或卖出负 ...
随机推荐
- MySQL Q&A 解析binlog的两个问题
MySQL Q&A 解析binlog的两个问题 博客分类: MySQL mysqlbinlog字符集解析binlog格式 连续碰到两个同学问类似的问题,必须要记录一下. 问题: 一个作 ...
- umask的作用
--umask的作用---------------2013/11/15 umask的作用就是当用户创建一个文件时,设置默认的目录和文件权限. 创建非目录文件时,用666减umask值(目录文件用777 ...
- Openfire服务器和Spark客户端配置
一.Openfire服务器的配置 关于之前一直在进行的聊天app的项目,我们还没有完成,这次我们介绍一下,Openfire服务器的配置. 1.Openfire下载 Openfire下载地址:http: ...
- [UWP]了解模板化控件(5.1):TemplatePart vs. VisualState
1. TemplatePart vs. VisualState 在前面两篇文章中分别使用了TemplatePart及VisualState的方式实现了相同的功能,其中明显VisualState的方式更 ...
- 如何统计iOS产品不同渠道的下载量?
一.前言 在开发过程中,Android可能会打出来很多的包,用于标识不同的商店下载量.原来觉得苹果只有一个商店:AppStore,如何做出不同来源的统计呢?本篇文章就是告诉大家如何做不同渠道来源统计. ...
- 再起航,我的学习笔记之JavaScript设计模式11(外观模式)
经过一段时间的学习与分享,我们对创建型设计模式已经有了一定的认识,未来的一段时间里我们将展开新的篇章,开始迈入结构性设计模式的学习. 结构性设计模式与创建型设计模式不同,结构性设计模式更偏向于关注如何 ...
- mybaits接口式编程
Mybatis是接口式编程实现对.xml中sql语句的执行,其过程如下(取自慕课网视频<通过自动回复机器人学Mybatis---加强版>): 1.加载配置信息2.通过加载配置信息加载一个代 ...
- 单文件文件上传到服务器(HTML5+js+Java)
上传单文件到服务器 应公司要求,在HTML5页面上实现上传文件到服务器,对于一个还没毕业的实习生菜鸟来说,这可不得了-----不会,网上各种百度,找各种博客还是没解决,最后还是请教了公司的大神,人家给 ...
- linux(一)之linux简介
其实在前几天我使用的是csdn来写博客,尝试了一下,发现真的太浪费时间了.可能是自己不太习惯的原因吧.所以最后还是换回使用博客园.接下来给大家带来的是linux,大家听到这里linux感觉很神秘的样子 ...
- Thinkjs使用ajax实现表单提交
//前端代码 1 $('form').submit(evt=>{ evt.preventDefault();//阻止表单默认提交 $.ajax({ url: '/user/personal/up ...