《Java技术》第六次作业
Java第六次作业
一 . 学习总结
1.XMind总结
- 截图:
2.关于异常的处理机制
-
printStackTrace方法的运行结果输出的是
异常信息
与出现异常的位置
:java.lang.Exception: Exception thrown in method3 at excise.PrintExceptionStack.method3(PrintExceptionStack.java:28) at excise.PrintExceptionStack.method2(PrintExceptionStack.java:24) at excise.PrintExceptionStack.method1(PrintExceptionStack.java:20) at excise.PrintExceptionStack.main(PrintExceptionStack.java:6)
-
getMessage方法的运行结果是
异常信息
:Exception thrown in method3
-
异常的处理机制:
- try代码段写出现异常的语句,catch写处理异常的语句,若使用throws关键字,它所声明的方法不处理异常,最好不要在主方法中使用,throw关键字是人为的抛出异常,在try里实例化抛出异常的对象,在catch中输出
3.迭代器的使用注意事项
- 如果删除的是books集合的最后一个对象,运行结果是:
原始元素之后:[One book, Two book, Three book]
One book
Two book
Three book
Exception in thread "main" java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:819)
at java.util.ArrayList$Itr.next(ArrayList.java:791)
at excise.Test2.main(Test2.java:14)
- 原因:如果删除的是最后一个对象,输出时迭代器的大小没有发生改变,集合的内容能正常输出,当对最后一个对象进行删除时,迭代器的大小发生变化,出现异常
- 若想要删除,使用迭代器的remove方法进行删除
- 代码如下:
import java.util.*;
public class Test2 {
public static void main(String[] args) {
Collection<String> books = new ArrayList<String>();
books.add("One book");
books.add("Two book");
books.add("Three book");
System.out.println("原始元素之后:" + books);
Iterator<String> it = books.iterator();
while (it.hasNext()) {
String book = (String) it.next();
System.out.println(book);
if (book.equals("One book")) {
it.remove();
}
}
System.out.println("移除元素之后:" + books);
}
}
4.HashSet的使用注意事项
- 出现重复元素的原因:
- 因为添加的是Student的一个匿名对象,匿名对象内容虽然相同,但是引用不同,所以有重复元素出现
- 解决方法:
- 在Student类添加equals方法与HashCode方法
二 . 实验总结
1. KTV点歌系统
-
程序设计思路:
- 创建Song类,声明需要的属性,添加setter与getter方法,重写toString方法,重写hashCode与equals方法,以便之后的属性比较
- 创建SongPlay类,声明Song的对象数组,与SongPlay类进行联系,并且按照功能增加方法
- 创建Test类,对功能进行有逻辑的调用与输出
-
问题1:
- 重写equals方法,也不能删除对象
- 输入字符串后不能正确给属性赋值
-
原因:
- 没有对equals方法增加getClass()的比较
- 我使用的是nextLine方法
-
解决方案:
- 增加getClass()的比较
- nextLine方法是读行,应该使用next方法,输入空格结束
2.微博注册
-
程序设计思路:
- 创建User类,声明需要的属性,添加setter与getter方法,重写toString方法,重写hashCode与equals方法,以便之后的属性比较
- 创建CheckOut类,声明User的对象数组,与CheckOut类进行联系,并且按照功能增加方法
- 创建Test类,对功能进行有逻辑的调用与输出
-
问题1:
- 比较手机号与邮箱时,不会使用正则表达式进行比较
-
原因:
- 没真正记住理解正则表达式的规则与用法
-
解决方案:
- 认真研究并且上网查了许多资料进行学习正则表达式
三 .代码托管
- 码云commit历史截图
四 .学习进度条
进程 | 代码行数(新增/累积) | 学习时间(新增/累积) | 本周学习内容 |
---|---|---|---|
目标 | 5000行 | 300小时 | |
第2-4周 | 500/500 | 45/45 | 自学了前四章的内容,自己练习了学习过程中的所有代码,并写了一些练习题提交到了码云中 |
第5周 | 200/700 | 15/55 | 学习了老师要求的内容 |
第6周 | 300/1000 | 15/70 | 学习了作业中要求的内容 |
第7-8周 | 200/1200 | 15/85 | 掌握了本次学习的全部内容 |
第9周 | 300/1500 | 10/95 | 掌握了本次学习的内容 |
第10周 | 400/1900 | 10/95 | 掌握了本次学习的内容 |