java语言的科学与艺术_java语言的科学与艺术-Rational(class)

1 /**

2 * The Rational class is used to represent rational numbers, which3 * are defined to be the quotient of two integer.4 *@authorAdministrator5 *6 */

7 public classRational {8 /**Creates a new Rational from the integer argument.*/

9 publicRational(){10 this(0);11 }12

13 /**

14 * Creates a new Rational from the integer argument.15 *@paramn The initial value16 */

17 public Rational(intn){18 this(n,1);19 }20

21 /**

22 * Creates a new Rational with the value x / y.23 *@paramx The numerator of the rational number24 *@paramy The denominator of the rational number25 */

26 public Rational(int x, inty) {27 int g =gcd(Math.abs(x), Math.abs(y));28 num = x /g;29 den = Math.abs(y) /g;30 if(y < 0) num = -num;31 }32

33 /**

34 * Adds the rational number r to this one and returns the sum.35 *@paramr The rational number to be added36 *@returnThe sum of the current number and r37 */

38 publicRational add(Rational r) {39 return new Rational(this.num * r.den + r.num * this.den, this.den *r.den);40 }41

42 /**

43 * Subtracts the rational number r from this one.44 *@paramr The rational number to be subtracted45 *@returnThe result of subtracting r from the current number46 */

47 publicRational substract(Rational r) {48 return new Rational(this.num * r.den - r.num * this.den, this.den *r.den);49 }50

51 /**

52 * Multiplies this number by the rational number r.53 *@paramr The rational number used as a multiplier54 *@returnThe result of multiplying the current number by r55 */

56 publicRational multiply(Rational r) {57 return new Rational(this.num * r.num, this.den *r.den);58 }59

60 /**

61 * Divides this number by the rational number r.62 *@paramr The rational number used as a divisor63 *@returnThe result of dividing the current number by r64 */

65

66 publicRational divide(Rational r){67 return new Rational(this.num * r.den, this.den *r.num);68 }69

70 /**

71 * Creates a string representation of this rational number.72 *@returnThe string representation of this rational number73 */

74 publicString toString() {75 if (den == 1) {76 return "" +num;77 } else{78 return num + "/" +den;79 }80 }81

82 /**

83 * Calculates the greatest common divisor using Euclid's algorithm.84 *@paramx First integer85 *@paramy Second integer86 *@returnThe greatest common divisor of x and y87 */

88 public int gcd (int x, inty) {89 int r = x %y;90 while (r != 0) {91 x =y;92 y =r;93 r = x %y;94 }95 returny;96 }97 /*Private instance variables*/

98 private int num; /*The numerator of this Rational*/

99 private int den; /*The denominator of this Rational*/

100 }

编辑推荐 本书采用现代面向对象方法,从零开始介绍最有用的类层次结构,全文使用图形和交互式程序,充分激发学生的学习兴趣。本书使用传记简介、引用以及哲学片段来突出计算的历史和理性背景,着重强调算法和问题解决,而今天的初级教科书通常忽略了这一点。 内容简介 自1995年首次发布以来,Java编程语言作为一种教学语言变得日益重要,现在已经成为初级计算课程斯坦福大学的标准语言Java语言可以让学生编写高度交互式程序,这充分激发了他们的学习兴趣。但Java语言很复杂,老师和学生们在理解Java语言的结构时,复杂性成为了最大的障碍。   在本书中,斯坦福大学教授、著名的计算机科学教育领导者Eric S.Roberts着重强调了更适合于初学者的友好讲解方式,使用ACM Java库简化编程。本书简练清晰地介绍了传统CS1课程的内容,同时也包含了最近的Computing Curriculum 2001报告计算机科学卷中指定为CS101O或CS111O课程的全部主题。 作者简介 Eric S. Roberts,美国斯坦福大学计算机科学系教授,并担任主管教学事务的系主任。同时还由于教学改革所取得的成就被评为Charles Simonyi荣誉教授。他于1980年获得哈佛大学应用数学博士学位,并曾在加州Palo Alto的DEC公司的系统研究中心工作了5年。作为一位成功的教育工作者,Roberts还获得了1993年的Bing Award奖。 目录 第1章 前言  1.1 计算简史  1.2 计算机科学的含义  1.3 计算机硬件简介  1.4 算法  1.5 编程过程的几个阶段  1.6 Java和面向对象范例  1.7 Java和WWW  1.8 小结  1.9 复习题 第2章 编程示例  2.1 “Hello world”程序  2.2 编程过程的观点  2.3 两数相加的程序  2.4 编程习语和模式  2.5 类和对象  2.6 图形程序  2.7 小结  2.8 复习题  2.9 编程练习 第3章 表达式  3.1 原始数据类型  3.2 常量与变量  3.3 运算符和操作数  3.4 赋值语句  3.5 布尔表达式  3.6 设计改变  3.7 小结  3.8 复习题  3.9 编程练习 第4章 语句形式  4.1 Java的语句类型  4.2 控制语句和问题解决  4.3 if 语句  4.4 switch语句  4.5 while语句  4.6 for语句  4.7 小结  4.8 复习题  4.9 编程练习 第5章 方法  5.1 方法概述  5.2 编写自己的方法  5.3 方法调用过程的技巧  5.4 分解  5.5 算法方法  5.6 小结  5.7 复习题  5.8 编程练习 第6章 对象和类  6.1 使用RandomGenerator类  6.2 javadoc文档系统  6.3 定义自己的类  6.4 表示学生信息  6.5 有理数  6.6 扩展现有类  6.7 小结  6.8 复习题  6.9 编程练习 第7章 对象和内存  7.1 内存结构  7.2 将内存分配给变量  7.3 原始类型与对象  7.4 链接对象  7.5 小结  7.6 复习题  7.7 编程练习 第8章 字符串和字符  8.1 枚举的原则  8.2 字符  8.3 作为抽象概念的字符串  8.4 使用String类中的方法  8.5 字符串处理案例研究  8.6 小结  8.7 复习题  8.8 编程练习 第9章 面向对象图形  9.1 acm.graphics模型  9.2 acm.graphics程序包的结构  9.3 使用形状类  9.4 创建复合对象  9.5 小结  9.6 复习题  9.7 编程练习 第10章 事件驱动程序  10.1 Java事件模型  10.2 简单的事件驱动程序  10.3 响应鼠标事件  10.4 响应键盘事件  10.5 创建简单的GUI  10.6 Swing 交互器层次结构  10.7 管理组件布局  10.8 使用TableLayout类  10.9 小结  10.10 复习题  10.11 编程练习 第11章 数组与ArrayList类  11.1 数组简介  11.2 数组的内部表示法  11.3 数组作为参数传递  11.4 使用数组制作表格  11.5 数组初始化  11.6 多维数组  11.7 图像处理  11.8 ArrayList类  11.9 小结  11.10 复习题  11.11 编程练习 第12章 搜索与排序  12.1 搜索  12.2 排序  12.3 评估算法效率  12.4 使用数据文件  12.5 小结  12.6 复习题  12.7 编程练习 第13章 数组与ArrayList类  13.1 ArrayList类回顾  13.2 HashMap类  13.3 Java集合架构  13.4 面向对象设计的原则  13.5 小结  13.6 复习题  13.7 编程练习 第14章 展望  14.1 递归  14.2 并发  14.3 使用网络  14.4 编程模式  14.5 小结  14.6 复习题  14.7 编程练习
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值