Deadline: 2017-5-4 23:00

一、学习要点

认真看书并查阅相关资料,掌握以下内容:

  • 理解Java的异常处理机制
  • 掌握捕获异常和声明抛出异常的方法
  • 掌握List接口的实现类ArrayList和LInkedList的使用
  • 掌握Set接口的实现类HashSet和TreeSet的使用
  • 掌握Iterator迭代器
  • 理解Map接口,学习使用HashMap和TreeMap
  • 学习使用Properties类

二、作业要求

发布一篇随笔,主要包括以下几部分的内容:

(一)学习总结

1.用思维导图对本周的学习内容进行总结。

参考资料: XMind

2.当程序中出现异常时,JVM会依据方法调用顺序依次查找有关的错误处理程序。可使用printStackTrace 和getMessage方法了解异常发生的情况。阅读下面的程序,说明printStackTrace方法和getMessage 方法的输出结果分别是什么?并分析异常的传播过程。

    public class PrintExceptionStack {
        public static void main( String args[] )
        {
             try {
                 method1();
              } catch ( Exception e ) {
                 System.err.println( e.getMessage() + "\n" );
                 e.printStackTrace();
              }
        }
       public static void method1() throws Exception
       {
          method2();
       }
       public static void method2() throws Exception
       {
          method3();
       }
       public static void method3() throws Exception
       {
          throw new Exception( "Exception thrown in method3" );
       }
    }

3.阅读下面程序,分析程序的运行结果,解释产生错误的原因,如果删除的是books集合的最后一个对象,运行的结果又是什么?你能对此作出解释吗?如果在遍历时非要删除集合中的元素,应如何实现?

    import java.util.*;
    public class Test
    {
    	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"))
    			{
    				books.remove(book);
    			}
    		}
    		System.out.println("移除元素之后:"+books);
    	}
    }

4.HashSet存储的元素是不可重复的。运行下面的程序,分析为什么存入了相同的学生信息?如果要去掉重复元素,应该如何修改程序。

    import java.util.*;
    class Student {
    	String id;	
    	String name;
    	public Student(String id, String name) {
    		this.id = id;
    		this.name = name;
    	}
    	public String toString() {
    		return "Student id=" + id + ", name=" + name ;
    	}
    }
    public class Test
    {
    	public static void main(String[] args) 
    	{
    		HashSet<Student> set = new HashSet<Student>();
    		set.add(new Student("1","Jack"));
    		set.add(new Student("2","Rose"));
    		set.add(new Student("2","Rose"));
    		System.out.println(set);				
    	}
    }

5.其他需要总结的内容。

(二)实验总结

实验内容:
1.模拟KTV点歌系统
分别用LinkedList和ArrayList集合,实现一个模拟KTV点歌系统的程序。实现以下功能:
(1)显示歌曲列表
(2)添加歌曲到列表
(3)删除歌曲
(4)将歌曲置顶
(5)将歌曲前移一位
(6)退出
题目扩展:歌曲包括曲名、演唱者。增加排序显示歌曲列表功能。
2.模拟微博用户注册
用HashSet实现一个模拟微博用户注册的程序。用户输入用户名、密码、确认密码、生日(格式yyyy-mm-dd)、手机号码(11位,13、15、17、18开头)、邮箱信息进行微博的注册。要求对用户输入的信息进行验证,输入信息正确后,验证是否重复注册,如果不是则注册成功,否则注册失败。
提示:
(1)设计一个用户类存储用户注册信息
(2)设计一个校验信息类,定义校验方法完成对输入信息的校验。学习使用正则表达式完成对生日、手机号码和邮箱的验证。
(3)设计一个用户注册类模拟注册过程。用HashSet存储用户数据列表,定义一个initData()方法添加初始用户信息。在main方法中完成用户注册功能。

完成实验内容,代码上传到码云,并对完成实验内容过程中遇到的问题、解决方案以及程序的设计思路和思考等进行归纳总结。
格式如下:
程序设计思路:XXXXXXX
问题1:XXXXXXX
原因:XXXXXXX
解决方案:XXXXXXX
问题2:XXXXXXX
原因:XXXXXXX
解决方案:XXXXXXX

(三)代码托管(务必链接到你的项目

  • 码云commit历史截图
    上传实验项目代码到码云,在码云项目中选择“统计-commits”,设置搜索时间段,搜索本周提交历史,并截图。

三、评分标准

  • 作业总分10分,以0.5分为最小打分单位。
  • 程序(5分):本次实验内容有两道题
    - 少一题扣2分。格式不规范扣1分,程序有错误扣1-2分。
  • 学习总结(3分)
    - 内容丰富,有自己的总结、思考和论述--3分
    - 有自己的总结和论述--1-2分
    - 大段文字复制,无自己的总结归纳--0分
  • 实验总结(2分)
    - 总结内容丰富--2分
    - 条理不清晰,应付了事--0-1分
  • 附加分:积极参与博客互评和互动,有实质内容加0.5-1分
  • 没有按时提交作业,则本次作业为0分。
  • 作业抄袭,倒扣10分。

随笔必须采用MarkDown格式,可参考作业模板