Java软件设计基础 课后作业
0. 编程小贴士A 准备好编程环境 输入代码 编译程序文件 运行编译后的文件
一个完整的Java Application程序
简单的获取输入 Java使用System.in表示标准输入设备。可通过Scanner类创建对象读取来自System.in的输入。 整行语句创建一个Scanner对象scan。可以通过调用以下方法读取输入: next():读取一个字符串; nextByte():读取byte类型的整数; nextShort():读取short类型的整数; nextInt():读取int类型的整数; nextLong():读取long类型的整数; nextFloat():读取float类型的数; nextDouble():读取double类型的数。
程序中的错误 编程时会遇到如下三种错误: 语法错误 逻辑错误 运行时错误 语法格式上的错误,可被编译器发现; 逻辑错误 即我们常说的“bug”,意指编写的代码在执行后没有得到预期结果; 运行时错误 比较严重的逻辑错误,会阻止程序的继续运行。 只要我们一开始编程,就会惊讶的发现程序并不能恰好像原本设想的那样运行。程序必须要经过调试。我记得有段时间我认识到了在我的编程生涯中,有很大一部分时光是用于寻找程序中的错误。 ——Maurice Wilkes* ------------------- *Maurice Wilkes:世界上第一台存储程序式计算机EDSAC的研制者;第二届(1967年)的图灵奖得主
学会方法的调用来简化程序 在屏幕上画矩形 如果画两个呢?
如果根据输入的需要画多个呢?
1 第一次课后习题(3月10日) 1-1 在3*3的9个方格子的棋盘上,计算机与人轮流放置棋子,看谁先把3个棋子连称一行。 1-2 猜单词:给定单词数组(不少于10个),计算机随机选择其中的一个,并显示单词长度。用户每次猜一个字母,如正确,将在相应的位置显示出来,重复该过程,直至字母全部猜出,用户也可以通过输入数字0来请求提示,此时计算机会随机选择一个尚未猜出的字母显示出来。 例如随机单词为apple,计算机先打印_ _ _ _ _ 用户输入a,计算机显示a _ _ _ _ 用户输入e,计算机显示a _ _ _ e 用户输入0,计算机显示a p p _ e(也可能是a _ _ l e) …… 作业于3月24日前发送至renkx@ustc.edu.cn
2.1 试设计超市收银队列类,该类具有以下属性和方法: 2 第二次课后习题(3月17日) 2.1 试设计超市收银队列类,该类具有以下属性和方法: 特质: 该类可以维护最多20条收银队列; 当目前存在的所有队列长度均大于等于8时,则增开一条收银通道; 当有的队列长度为0时,关闭该收银通道; 因为各个通道之间有护栏相隔,所以顾客一旦进入收银通道,不能离开队列; 并完成以下功能: 返回当前的总收银通道数和目前正在排队的人总数; 打印各队列长度; 每次由键盘接受目前即将加入排队的顾客数目;当接受了该数目以后,由于人们的排队心理,将尽量选择队列短的那条队列加入,然后次之,同时各队列头同时各有一位顾客付款结束离开; 作业于3月31日前发送至renkx@ustc.edu.cn
3 第三次课后习题(3月31日) 3-1 试设计图书馆资源的类层次结构。 资源包括书籍、杂志、电子资源等。 父类中保存共有信息,如编码、标题、借出者,归还时间、在库等; 子类中实现特定类型内容所特有的行为: 如书籍包括作者、出版社等;杂志包括期刊年份、卷号等;电子资源包括大小等…… 这些资源都可以借出,也可以归还; 当某个借出者其借出资源数已经超过三个时,不允许再借。 注:这里要考虑为图书馆用户创建类,类的属性与行为请自行设定。 作业于4月14日前发送至renkx@ustc.edu.cn
单向链表的实现 链表的结点: 指针: 一个单向链表是一组结点(数据元素)的序列,每个结点有两个域:数据域和指针域。 指针域存放其后继结点的地址,最后一个结点的指针域为空。头指针head指向链表的第一个结点,当链表为空时,头指针为空值。
结点的数据域: 链表需要实现的功能: 数据域存放数据,可能是土豆牛肉、鱼香肉丝、红烧排骨三种菜中的任何一种。 菜式具有烹煮时间和几人份(1-3)的属性。 每种菜烹煮时间不同,但对于一个菜而言,1人份的烹煮时间T(T>20)是固定的。 链表需要实现的功能: 生成链表: 生成一条10长度的待烹煮的菜单队列,菜式随机,均为1人份; 生成一条长度为用户指定的待烹煮的菜单队列,菜式随机,均为1人份 ; 节省时间的烹饪 现已知,如果当前节点的未来5个菜式中,有同种不超过3份的菜,则可 以合并烹煮以后再分盘,烹煮时间为(x-1)T+10,其中x为份数。 遍历链表,并为厨师缩减烹调的链表以节省时间。
作业暂不提交
4 第四次课后习题(4月7日) 4-1 试完成对简单文本文件的压缩。 文本文件假设只由英文字母组成(忽略大小写); 利用哈夫曼编码*对其进行压缩。 统计各字符出现的频率; 构造哈夫曼树并进行二进制编码; 将字符替换为二进制编码并写入新文件中。 *设文本文件内容为“AFTERDATAEARAREARTAREA”,这里用到的字符集为“A,E,R,T,F,D”,各字母出现的次数为{8,4,5,3,1,1}。 编码:A-00;E-10;R-11;T-011;D-0100;F-0101 文本变为:“000101011101101000001100100011001110001101100111000” 长度为51bit,而原文本文件则为22个字符,占22*16bit。 作业于4月28日前发送至renkx@ustc.edu.cn
从第一次作业中的两道题中选择一道,转换为GUI程序。 5 第五次课后习题(5月5日) 从第一次作业中的两道题中选择一道,转换为GUI程序。 作业于5月19日前发送至renkx@ustc.edu.cn