《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 掌握了本次学习的内容

原文地址:https://www.cnblogs.com/Melody-529/p/6783649.html