已阅读5页,还剩46页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
虞山学院 Java 程序设计 实验指导及报告书 学年学年 第第 学期学期 姓姓 名 名 学学 号 号 班班 级 级 指导教师 指导教师 计算机科学与工程学院计算机科学与工程学院 20092009 2 实验实验 实验一 创建简单的 JAVA 应用程序 2 实验二 选择和循环 2 实验三 数组和字符串处理 2 实验四 类和对象编程 一 2 实验五 类和对象编程 二 2 实验六 继承与多态编程 2 实验七 接口和集合 2 实验八 文件和输入输出 2 3 实验一实验一 创建简单的创建简单的 JAVA 应用程序应用程序 一 实验目的 1 了解 JAVA 基本程序结构 2 熟悉命令行方式下 JAVA 应用程序编写 编译 调试和执行过程 3 了解 Eclipse 集成开发环境的功能和特点 二 实验内容 1 安装并配置 JDK 开发工具包 2 调试并运行下列 Hello world 程序 并写出运行结果 各文件统一按照注释行上的文件名进行命名 版本一 HelloJava1 java public class HelloJava1 public static void main String args System out println Hello nWorld 存盘后 假设存在 d 1 编译 d javac HelloJava1 java 2 由虚拟机解释执行 d java HelloJava1 运行结果 注意 按照屏幕输出格式写 3 程序不以 HelloJava1 java 命名 编译能通过吗 为什么 4 版本二 HelloJava2 java import javax swing 导入 JFrame 和 JLabel 类所在的包 public class HelloJava2 public static void main String args 新建一个 JFrame 对象以便在屏幕上显示一个窗口 JFrame frame new JFrame Hello Java frame setSize 300 300 设置窗口的高度和宽度 frame setVisible true 设置窗口可见 运行结果 注 按 Ctrl C 退出程序 版本三 在版本二的基础上增加两条语句 编译 运行查看效果 HelloJava3 java import javax swing 导入 JFrame 和 JLabel 类所在的包 public class HelloJava3 public static void main String args JFrame frame new JFrame Hello Java 增加一个标签 来保存一个文本 从而可在窗口中央显示文本 JLabel labe1 new JLabel Hello Java JLabel CENTER 把标签 label 加入到窗口 frame 中 frame getcontentPane add label frame setSize 300 300 frame setVisible true 5 运行结果 注 按 Ctrl C 退出程序 将程序中 JLabel CENTER 改为 JLabel LEFT 或 JLabel RIGHT 运行效果有何 变化 版本四 编写并运行基于浏览器的 Applet 小应用程序 Step1 编写如下代码 并以 HelloApplet java 存盘 import java applet import java awt public class HelloApplet extends Applet public void paint Graphics g g drawString Hello World 50 50 Step2 编译生成 HelloApplet class 字节码文件 Step3 编写如下代码 并以 HelloExam html 网页 存盘 MyFirstJavaApplet 6 Step4 用 IE 打开该网页 查看运行效果 Step5 D appletviewer HelloExam html 来启动 Applet 小应用查看运行效果 注 HelloApplet class 文件和 HelloExam html 在同一目录下 3 调试并运行下面程序 并写出运行结果 StarTriangle java public class StarTriangle public static void main String args int i j for i 0 i 3 i for j 0 j 2 i j System out print 一个空格 for int k 0 k 2 i k System out print System out println 输出换行 运行结果 注意 按照屏幕输出格式写 4 下面是一个模拟计算器的程序 两个操作数都为正整数 计算器应该能 够执行以下算术操作 加法 减法 乘法 除法中的一种 调试并运行下面 程序 根据输入写出运行结果 注意 程序输入时要区分大小写 TestCalc java import java util Scanner 类在此包中 故需导入 7 class CalcNumber private int number1 number2 private int option private int result public void compute Scanner scanner new Scanner System in System out println Enter the First Number number1 scanner nextInt System out println Enter the Second Number number2 scanner nextInt System out println Main Menu System out println 1 Addition System out println 2 Subtraction System out println 3 Multiplication System out println 4 Division System out println Enter the Operation you want to perform option scanner nextInt switch option case 1 result number1 number2 break case 2 result number1 number2 break case 3 result number1 number2 break case 4 result number1 number2 break default System out println Invalid Option return System out println The result is result 8 public class TestCalc public static void main String args CalcNumber myCalc new CalcNumber myCpute 从键盘输入 8 和 2 两个整数时 1 选择 3 时的运行结果 2 选择 5 时的运行结果 从键盘输入 8 和 two 时 第二个数为非整数 程序运行结果 5 在保持功能不变的情况下 改写上例代码如下 注意修改的代码 import java util class CalcNumber private int number1 number2 private int option private Scanner scanner new Scanner System in public void getNumber System out println Enter the First Number number1 scanner nextInt System out println Enter the Second Number number2 scanner nextInt 9 public void getOption System out println Main Menu System out println 1 Addition System out println 2 Subtraction System out println 3 Multiplication System out println 4 Division System out println Enter the Operation you want to perform option scanner nextInt public int compute int result switch option case 1 result number1 number2 break case 2 result number1 number2 break case 3 result number1 number2 break case 4 result number1 number2 break default throw new IllegalArgumentException Invalid Option return result public class TestCalc public static void main String args try CalcNumber myCalc new CalcNumber myCalc getNumber myCalc getOption int result myCpute 10 System out println The result is result catch Exception e System out println e toString 比较与上例运行结果 是否完全相同 从键盘输入 8 和 2 两个整数时 选择 3 时的运行结果 选择 5 时的运行结果 从键盘输入 8 和 two 时 第二个数为非整数 程序运行结果 在 main 函数中如不加 try 和 catch 部分代码 运行结果又会怎样 体会程序 5 的结构与程序 4 相比哪一个好 谈谈你的理解 三 教师评分 实验预习 20 实验过程 20 实验结果 30 实验报告 30 总成绩 11 实验二实验二 选择和循环 一 实验目的 1 掌握 Java 基本数据类型和表达式的特点和用法 2 熟练掌握单分支 双分支 多分支选择语句的格式与功能 能正确选取 选择语句来设计选择结构的程序 3 熟练掌握 while do while for break 语句 continue 语句的格式和 功能 并能根据循环结构的要求正确选取循环语句来实现循环和多重循环 二 预习内容 1 Java 基本数据类型有哪几种 2 从存储角度看 Java 将变量的类型分为基本数据类型和引用类型 它们两 者有何区别 举例说明 3 学习查阅 JDK 文档 找到 Random 类和 Math 类 说明它们分别在什么包 当中 并了解它们的用法 三 实验内容 12 1 调试并运行下面程序 写出运行结果 ThrowRoll java import java util public class ThrowRoll public static void main String args int roll Random rd new Random 创建一个生成随机数的对象 rd System out println 开始掷筛子 for int count 0 count 5 count rd nextInt n 生成 0 n 1 之间的随机整数 roll 1 rd nextInt 6 生成 1 6 的随机整数 System out print 第 count 次 roll switch roll case 1 case 3 case 5 System out print 筛子是奇数 t break case 2 case 4 case 6 System out print 筛子是偶数 t break System out println 它的平方根是 Math sqrt roll 程序运行结果 2 某服装店经营套服 也单件出售 若买的不少于 50 套 每套 80 元 不足 50 套 每套 90 元 若只买上衣每件 60 元 只买裤子每条 45 元 从键盘读 入所买上衣 coat 和裤子 trousers 件数 计算应付款 money 提示 1 先计算成套的衣服多少钱 2 再计算剩下的单件的上衣 单件的裤子多少钱 3 计算总付款 13 将程序补充完整 CalcPay java import java util public class CalcPay public static void main String args int coat trousers money Scanner scanner new Scanner System in System out println Enter coat number coat scanner nextInt System out println Enter trousers number trousers scanner nextInt money getPay coat trousers System out println total money money public static int getPay int c int t 14 要求用以下三套测试数据测试程序 a coat 55 trousers 70 b coat 55 trousers 40 c coat 5 trousers 3 此时应显示错误信息 运行结果分别是 3 编程输入年份月份 打印该月的天数 变量命名要求 年份 year 月份 month 计算结果 天数 days 程序代码 15 输入 年份 2008 月份 10 运行结果 年份 2008 月份 2 运行结果 年份 2009 月份 9 运行结果 年份 2009 月份 2 运行结果 年份 2009 月份 99 运行结果 4 计算机来当一年级的算术老师 要求给出十道两位数的四则运算的算术题 每道题 10 分 学生输入该题的答案 计算机根据学生的答案判断正确与否 当结束时给出成绩 提示 用 Random 类产生两个两位数的随机数 程序代码 16 四 实验小结 谈谈本次实验的心得 体会 五 选做实验 编写一个程序打印九九乘法表 1 1 1 2 1 2 2 2 4 3 1 3 3 2 6 3 3 9 4 1 4 4 2 8 4 3 12 4 4 16 六 教师评分 实验预习 20 实验过程 20 实验结果 30 实验报告 30 总成绩 17 实验三实验三 数组和字符串处理 一 实验目的 1 要求掌握一维数组 多维数组 主要指二维 的创建 初始化 数组元素的 引用等方法 2 掌握冒泡排序算法 3 掌握二分查找算法 4 掌握字符串处理的相关方法 二 预习内容 1 如何创建一个能存放十个整数的一维数组 intArr 2 如何创建一个如下图的不等长的存放整数的二维数组 jagArr 3 查阅 JDK 文档 至少写出 String 类的五个方法 并说明这些方法的作用 12 345 67890 18 三 实验内容 1 实现对从键盘输入一批非零整数 以 1 作为输入结束标记 对这批整数进行排 序 要求 1 用选择或冒泡升序排 2 从控制台获取数据 排序 输出数组功能分别做成三个方法 3 安排方法的调用 注意方法调用时参数的传递 程序代码 19 2 数组 A 中的 N 0 N 100 个整数从小到大进行连续编号 要求不能改变数组 A 中元素的顺序 如 A 78 42 34 94 25 则输出为 4 3 1 5 2 数组长度 N 和数组中元素要求从键盘输入 程序代码 3 已知一个已经从小到大排序的数组 这个数组中的一个平台就是指连续的一串 值相同的元素 并且这一串元素不能再延伸 例如 在 1 2 2 3 3 3 3 4 4 5 5 5 6 中 1 2 2 3 3 3 3 4 4 5 5 5 6 划线部分都是一个 平台 试编写程序 接收任意一个已排好序数组 把这个数组中最长的平台找出 来 在上面的例子中 3 3 3 3 就是该数组中最长的平台 平台长为 4 20 4 调试下列代码 写出运行结果 public class Example public static void change String str char ch str test ok ch 0 g public static void main String args String str good char ch a b c change str ch System out print str and System out println ch 运行结果是 test ok and gbc 吗 为什么 请分析原因 5 调试下列代码 写出运行结果 分析程序的功能 class DeleteStr public static String Del String origin String smod if origin null while index 1 String ret origin substring 0 index ret ret origin substring index smod length origin ret index origin indexOf smod 21 return origin else return null public class Program public static void main String args String str hellxyzo wxyzoxyzrldxyz String smod xyz String newString newString DeleteStr Del str smod System out println newString 运行结果 程序完成什么样功能 六 教师评分 实验预习 20 实验过程 20 实验结果 30 实验报告 30 总成绩 22 实验四实验四 类和对象编程类和对象编程 一一 一 实验目的 1 掌握 Java 中类的定义 对象的创建方法 2 理解封装性及其意义 3 掌握构造函数的含义与作用 定义方式和实现 能够根据要求正确定义和重 载构造函数 4 能够根据给定的要求定义类并实现类的成员函数 5 理解类的成员的访问控制的含义 公有 私有和保护成员的区别 二 实验内容 1 定义一个学生类 其中有学号 姓名 年龄 3 个数据成员 以及若干成员函 数 同时编写主函数使用这个类 实现对学生数据的赋值和输出 要求 使 用构造函数实现对数据的输入 使用成员函数实现对数据的输出 调试下 列的参考代码 Student java public class Student private String id private String name private int age public Student String id String name int age this id id this name name this age age public void display System out println id id tname name tage age public static void main Student s1 new Student 001 zhangshan 16 s1 display 23 程序的 Student 类使用了构造方法 请回答 1 构造方法何时被调用 2 关键字 this 有何作用 3 在实例化了 s1 对象后 如要将 s1 对象的 id 改为 002 程序将如何修改 2 实现交通工具 Vehicle 类 版本一 1 没有数据隐藏的类 创建一个 Vehicle 类实现上面的 UML 类图 A 含有两个 public 属性 load 车辆当前的载货量 maxLoad 车辆的最大载货量 B 含有一个公有的构造函数用于初始化最大载货量属性 maxLoad C 含有两个公有的函数 public double getLoad 用于得到当前的载货量 public double getMaxLoad 用于取得最大载货量 注意 所有的数据都是假定以千克 kilograms 作为单位的 在这个版本的 Vehicle 类中 你将把所有成员的属性设置为 public 这样在 下面测试程序 TestVehicle1 中可以直接访问这些成员 2 编写下面的程序对 Vehicle 类进行测试 代码如下 24 public class TestVehicle1 public static void main String args Vehicle vehicle new Vehicle 10000 0 System out println Add box 1 500kg vehicle load vehicle load 500 0 System out println Add box 2 250kg vehicle load vehicle load 250 0 System out println Add box 3 5000kg vehicle load vehicle load 5000 0 System out println Add box 4 4000kg vehicle load vehicle load 4000 0 System out println Add box 5 300kg vehicle load vehicle load 300 0 System out println Vehicle load is vehicle getLoad kg n 应该得到以下的结果 Add box 1 500kg Add box 2 250kg Add box 3 5000kg Add box 4 4000kg Add box 5 300kg Vehicle load is 10050 0 kg 从程序的运行结果来看 你发现了什么问题 思考如何才能避免 版本二 1 基本数据隐藏 为了解决第一个版本中的问题 你应该隐藏类中的数据成员 load 和 maxLoad 并且提供一个方法 addBox 来检查车辆是否会发生超载 25 创建一个 Vehicle 类实现上面的 UML 类图 A 把 load 和 maxLoad 属性修改为 private 私有的 B 添加 addBox 方法 public boolean addBox double weight 参数为所加箱子重量 这个方法必须检查加上一个箱子后是否会超过车辆的最大载货量 如果 超过了 应该拒绝装载这个箱子并返回 false 否则把箱子加到车上并返回 true 注意 所有的数据都是假定以千克 kilograms 作为单位的 2 编写下面的程序对新版本的 Vehicle 类进行测试 代码如下 public class TestVehicle2 public static void main String args Vehicle vehicle new Vehicle 10000 0 System out println Add box 1 500kg vehicle addBox 500 0 System out println Add box 2 250kg vehicle addBox 250 0 System out println Add box 3 5000kg vehicle addBox 5000 0 System out println Add box 4 4000kg vehicle addBox 4000 0 System out println Add box 5 300kg vehicle addBox 300 0 System out println Vehicle load is vehicle getLoad kg 阅读并运行下面的测试程序段 注意代码中不能直接修改 load 属性的值 现在我们可以使用 addBox 方法 这个方法将返回 true 或 false 并打印到屏幕上 应该得到以下的结果 Add box 1 500kg true Add box 2 250kg true Add box 3 5000kg true 26 Add box 4 4000kg true Add box 5 300kg false Vehicle load is 9750 0 kg 版本三 1 改变重量的内部表示单位为牛顿 现在假设你将要作一些关于车辆发动机和轮胎等磨损的计算 这些计算使用 用牛顿表示的重量 创建一个 Vehicle 类实现上面的 UML 类图 修改构造方法 getLoad getMaxLoad 和 addBox 方法 使它们使用一 个从千克到牛顿的相互转换 你可以定义下面的私有方法 private double kiloToNewts double weight private double newtsToKilo double weight 注意 vehicle 对象的内部数据是以牛顿为单位的 而外部数据 在方法中传 递的参数 还是以千克为单位 2 编写下面的程序对新版本的 Vehicle3 类进行测试 注意它和版本 2 中的测 试代码是相同的 代码如下 public class TestVehicle3 public static void main String args Vehicle3 vehicle new Vehicle3 10000 0 System out println Add box 1 500kg vehicle addBox 500 0 System out println Add box 2 250kg vehicle addBox 250 0 System out println Add box 3 5000kg vehicle addBox 5000 0 System out println Add box 4 4000kg vehicle addBox 4000 0 System out println Add box 5 300kg vehicle addBox 300 0 27 System out println Vehicle load is vehicle getLoad kg 应该得到以下的结果 Creating a vehicle with a 10 000kg maximum load Add box 1 500kg true Add box 2 250kg true Add box 3 5000kg true Add box 4 4000kg true Add box 5 300kg false Vehicle load is 9750 0 kg 对 Vehicle 类的第二个和第三个版本采用相同的测试代码 输出的结果有没 有发生变化 从代码可维护性的角度谈谈封装的好处 3 如果已知一个日期为 2007 3 8 求 10 天后是哪一天 367 天后呢 设计思路 1 定义一个 MyDate 类 版本一 成员有 class MyDate 数据成员 private int day private int month private int year 方法成员 public MyDate int y int m int d 构造一个日期 public MyDate dayInc 返回下一天的日期 public MyDate dayInc int x 返回 x 天后的日期 public void display 显示当前日期信息 28 2 对 MyDate 类进行测试 测试代码如下 public class TestDate public static void main String args MyDate d1 new MyDate 2007 3 8 MyDate d2 d2 d1 dayInc 10 d2 display d2 d1 dayInc 367 d2 display 要求 将 MyDate 类中的方法代码编写完整 以实现程序所要求的功能 29 如果将 main 方法中的语句 MyDate d1 new MyDate 2007 3 8 改为 MyDate d1 new MyDate 2007 33 58 其它语句不变 程序运行结果是什么 运行结果 3 修改 MyDate 类 版本二 要求 必须对生成的日期做合法性验证 设定如下规则 A year 大于或等于 1900 年 合法 否则则将 year 置为 1900 B Month 在 1 12 范围内合法 否则将 month 置 1 C Day 与 month 有关 应 month 所在月有效 否则置 1 设计参考 在 MyDate 类中增加两个方法 public void SetDate int d int m int y 设置日期 private void CheckDate int y int m int d 对日期的有效性检查 进一步 求两个日期之间的相差的天数 MyDate 类又如何改进 设计参考 在 MyDate 类中增加 公有的方法 public int daysBetweenTowDate MyDate otherDate 30 31 4 课后思考题 设计一个数学中的分数类 Fraction 并测试结果是否正确 要求 1 一个分数由分子和分母构成 2 生成的分数对象的分子和分母必须满足的条件 A 分母不为零 B 分子和分母既约 化简后最大公约数只能为 1 C 分子和分母异号时分子为负 3 分数对象之间能够四则运算 分数与整数之间也能够完成四则运算 4 分数对象之间能够比较大小 分数与整数之间也能够比较大小 5 一个分数的对象能够转化为小数形式 四 实验小结 五 教师评分 实验预习 20 实验过程 20 实验结果 30 实验报告 30 总成绩 32 实验五实验五 类和对象编程类和对象编程 二二 一 实验目的 了解类之间的关系 能区分关联关系中的聚合和组合的区别 学习并掌握使用多个类对象构建一复杂系统 二 实验内容 创建一个应用程序 实现下面的 UML 图 Step1 实现银行帐户 Account 类 1 私有的属性 balance 用于保存帐户中的当前余额 2 公有带参构造方法 对 balance 属性进行了初始化 3 公有方法 getBalance 用于取得当前帐户余额 4 公有方法 deposit 用于把数量为 amount 的现金存储到当前帐户中 5 公有方法 withdraw 用于从当前帐户中提取数量为 amount 的现金 33 Step2 实现 Customer 类 UML 图中 Account 类和 Customer 类之间的关系是聚合 即 Account 类的对象 作为 Customer 类的成员 图中箭头上方的是对象名 两端的 1 表示一对一关系 即一个 Customer 类的对象含有一个 Account 类的类对象作为成员 1 私有属性 firstName lastName 和 account 2 公有的带参构造方法 用于对 firstName lastName 属性进行了初始化 3 公有的成员方法 getFirstName 返回 firstName 的属性 4 公有的成员方法 getLastName 返回 lastName 的属性 5 公有的成员方法 setAccount 对对象成员 account 进行设置 6 公有的成员方法 getAccount 取得对象成员 account 的值 Step3 实现 Bank 类 bank 对象只是简单地记住它和它的客户之间的联系 通过一个 Customer 数组来 实现这个一对多的聚合关系 还需要设置一个整型的属性来存放当前银行中客户 的数目 1 私有属性 customers 一个 Customer 类的对象数组 numberOfCustomers 银行当前客户的数量 每增加一个客户 其值加一 2 公有的构造方法 用适当的数组长度对 customers 对象数组进行初始化 3 公有的成员方法 addCustomer 通过参数 first name last name 创建一个新的 Customer 对象 并把它存放 在 customers 对象数组中 同时它必须增加 numberOfCustomers 的值 4 公有的成员方法 getNumOfCustomers 返回 numberOfCustomers 属性的值 5 公有的成员方法 getCustomer 成员方法 返回对象数组中指定下标为 index 的 customer 对象 Step4 编写测试程序如下 public class Testing public static void main String args Bank bank new Bank bank addCustomer Simms Jane 34 bank addCustomer Bryant Owen bank addCustomer Soley Tim bank addCustomer Soley Maria bank getCustomer 0 setAccount new Account 500 bank getCustomer 1 setAccount new Account 500 bank getCustomer 2 setAccount new Account 500 bank getCustomer 3 setAccount new Account 500 for int i 0 ioverdraftProtection 那么整个交易应该放弃 提款失败 否则提款后的 balance 应为 0 提款后的最大透支额度 overdraftProtection 应该为原有最大透支额度减去 amount balance 3 再看 Account 类 其 withdraw 行为要在其具体的子类中才能确定 故将其 withdraw 方法设计 成一个抽象方法 由子类去改写 因此 Account 类也应重新设计成一个抽象类 Step2 具体实现参考 1 和实验五相比 Account 类中的 balance 属性的访问控制修饰符变成了 protected 其 withdraw 方法变成一个抽象方法 因此 Account 类是一个抽象类 2 SavingsAccount 类设计 1 定义一个 double 型的数据属性 interestRate 利率 2 定义一个带有两个参数 balance 和 interest rate 的构造方法 这个构造方 法通过 super balance 调用父类的构造方法完成对 balance 属性的初始化 3 增加一个 addInterest 方法 将所获利息加到 balance 上 4 实现父类中的 withdraw 抽象方法 3 CheckingAccount 类 1 定义一个 double 型的属性 最大透支额度 2 定义一个带有一个 balance 参数的构造方法 这个构造方法通过 super balance 调用父类的构造方法 3 定义另外一个带有两个参数的构造方法 这个构造方法通过 super balance 调用父类的构造方法 并且对属性 overdraftProtection 进行设置 4 对成员方法 withdraw 进行改写 改写规则见 Step1 Step3 仿照银行和客户之间的关系修改 Customer 类 使一个客户可以有多个帐号 Step4 编写测试程序 首先添加四个客户到银行 并分别为其添加帐号 打印报表 并 对第一个客户的各个帐户进行操作以验证 SavingsAccount 和 CheckingAccount 类 中 withdraw 方法的正确性 测试程序最终输出的结果如下 Customer Reports 38 Customer Jane Smith SavingsAccount Current balance is 500 0 Interest rate 0 03 CheckingAccount Current balance is 500 0 OverdraftProtection 0 0 CheckingAccount Current balance is 500 0 OverdraftProtection 500 0 Customer Owen Bryant CheckingAccount Current balance is 200 0 OverdraftProtection 0 0 Customer Tim Soley SavingsAccount Current balance is 1500 0 Interest rate 0 03 CheckingAccount Current balance is 200 0 OverdraftProtection 0 0 Customer Maria Soley CheckingAccount Current balance is 200 0 OverdraftProtection 0 0 SavingsAccount Current balance is 150 0 Interest rate 0 03 Testing account of customer No 1 Withdraw 300 00 true Withdraw 300 00 false Balance of account NO 1 is 200 0 Withdraw 300 00 true Withdraw 300 00 false Balance of account NO 2 is 200 0 Withdraw 300 00 true Withdraw 300 00 true Balance of account NO 3 is 0 0 要求将各个类编写完整 请合理安排好版面 39 40 四 教师评分 实验预习 20 实验过程 20 实验结果 30 实验报告 30 总成绩 实验七实验七 接口和集合接口和集合 一 实验目的 1 了解接口的概念和作用 2 掌握接口的定义 实现以及接口的作用 3 掌握 Java 中的动态数据结构实现 4 掌握 ArrayList 类 LinkedList 类 HashSet 类和 HashMap 类的使用 41 二 实验内容 1 下面例子将要实现一个代表一个点的类 用该类实例化一组点 根据每个点 到原点的距离从小到大排序输出这些点 1 创建一个名为 SortablePoint 的类 step1 该类有 xPos yPos 两个私有整形数据成员分别代表该点的 x 和 y 方向 上的坐标 step2 定义带参构造方法初始化 xPos yPos 的值 step3 为 xPos yPos 定义存取的方法 getX setX getY setY step4 定义一个 getDistance 方法 获取该点到原点的距离 step5 让 SortablePoint 类实现 Comparable 接口 step6 定义 toString 方法 step7 实现 Comparable 接口定义的 compartTo 方法 为类指明排序规则 即根据点到原点距离排序 参考代码 class SortablePoint implements Comparable private int xPos private int yPos public SortablePoint public SortablePoint int x int y xPos x yPos y public int getX return xPos public void setX int x xPos x public int getY return yPos public void setY int y yPos y private int squaredDistance 点到原点距离的平方 return xPos xPos yPos yPos public double getDistance 点到原点距离 return Math sqrt this squaredDistance public String toString return getX getY tdistance pt getDistance 42 实现了 Comparable 接口 public int compareTo SortablePoint other if this squaredDistance other squaredDistance return 1 else if this squaredDistance other squaredDistance return 0 else return 1 2 编写测试程序 创建一个以点为元素的列表 列表中的点随机生成 将列 表中的点按按到原点距离排序 然后将排序后的点打印输出以检查是否正确 测试代码 TestPoints java import java util public class TestPoints public static void main String args ArrayList points new ArrayList Random rnd new Random for int count 0 count 10 count points add new SortablePoint rnd nextInt 20 rnd nextInt 20 Collections sort points 对列表中点按到原点距离排序 SortablePoint pt for int count 0 count points size count pt points get count 43 System out println pt 写出程序运行结果 2 依据在实验六中 在银行类中使用数组存放客户 在客户类中使用数组存放 帐号 客户和帐号的数量受到了限制 不能随意增加 修改程序 改用 ArrayList 或 LinkedList 来存放客户和帐号 最后测试你的程序 根据测试结果 谈谈你对数组和集合的理解 3 编程模拟生成一副扑克牌 发牌给几个玩家的程序 把洗好的一副牌分给几个 玩家 依次显示每个玩家的牌 A 设计一个 Card 类 代表发牌游戏中的一张扑克牌 B 设计一个 Deck 类 代表一副牌 C 设计一个
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 产品定价策略及市场推广计划方案
- 企业内容营销策略与内容创作方法
- 面试深盾科技前需要了解的公司信息与产品知识
- UI设计师作品集优化技巧
- 未来五年带锯带钢市场需求变化趋势与商业创新机遇分析研究报告
- ESG合规专员员工行为准则与合规培训计划
- 人力资源招聘专员招聘渠道拓展方案
- 未来五年云木香行业直播电商战略分析研究报告
- 未来五年新形势下高温硫化硅橡胶行业顺势崛起战略制定与实施分析研究报告
- 公共场所安保措施与实施方案
- 肾上腺素受体激动药第十章98课件
- 大量心包积液护理查房
- 新课标背景下初中化学跨学科实践活动的设计与实践
- 健康传播的共情唤醒模型-洞察阐释
- 汽运公司机务管理制度
- (高清版)DB62∕T 25-3069-2013 城市园林绿地养护管理标准
- 彩色的中国诗朗诵课件
- 高中生物家长会课件
- 《美容顾客心理分析》课件
- 内蒙古赤峰市2025届高三11月模拟考-英语答案
- 汽车保险与理赔什么是交强险课件
评论
0/150
提交评论