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)不能出现一票多卖或卖出负 ...
随机推荐
- 关于socket通信bind()返回值错误:10049
这个问题,我差点和客户吵起来了.我的电脑确实没有问题,客户电脑却会经常出现,.今天查了下,居然是这种问题,大意了,在这里记录下. 服务器端程序开启的时候总是提示:bind错误,用WSAGetLastE ...
- 社群系统ThinkSNS V4.5.29 APP更新发布,新增用户认证及系统消息
社群系统ThinkSNS V4版本移动端APP将于7月29日更新发布,本次更新修复部分bug,最主要是增加了移动端APP的用户认证功能,以及添加了系统消息,为V4.5.29版本发布.这两个功能PC端的 ...
- Java中常见数据结构List之ArrayList
这里主要包含ArrayList和LinkedList, 然后再添加一个:CopyOnWriteArrayList 关于Java中的集合内容, 感觉都已经被写烂了, 我这里主要是做个复习, 再从扒下源代 ...
- 关于C#的学习心得体会
1·多看多写 多看网上成熟的demo,养成一个良好的代码编写习惯,将终生受益 2·多编多敲 看了代码,理解demo中的思路,灵活运用到自己的代码中,这样不仅了解了别人的代码,同时还了解了代码的执行过程 ...
- Luogu P3390 【模板】矩阵快速幂
题目背景 矩阵快速幂 题目描述 给定n*n的矩阵A,求A^k 输入输出格式 输入格式: 第一行,n,k 第2至n+1行,每行n个数,第i+1行第j个数表示矩阵第i行第j列的元素 输出格式: 输出A^k ...
- emacs命令记录
C-代表按住Ctrl键 M-代表按住Alt键,也可以用按一下ESC放开代替 最先要记住的 M-x <cmd> 输入指令执行,在输入时用Tab可以自动补全或列出项目 C-g ...
- 004-谈一谈lock和synchronized
这两个关键字都是用来对线程进行同步操作的. 参考疯狂java讲义16.5节 线程的同步. (完全答反了...)
- jboss初体验
本人电脑的java版本是java8,而jboss的版本最多支持到java7.x,导致启动jboss7,在浏览器无法访问localhost:8080. 于是我查找百度,发现jboss8其实就是wildf ...
- iphone 4s页面引用jssdk无效
今天在做项目的时候,发现了一个bug,用户在iphone 4s上使用该项目打开网页时,调用上传图片的接口没反应. 无语啊.找了半天也没找到是什么问题.
- jQuery遍历-过滤
缩写搜索元素的范围 三个最基本的过滤方法是:first(), last() 和 eq(),它们允许您基于其在一组元素中的位置来选择一个特定的元素. 其他过滤方法,比如 filter() 和 not() ...