有理数的类封装

上传人:mg****85 文档编号:34375969 上传时间:2018-02-23 格式:DOC 页数:5 大小:73KB
返回 下载 相关 举报
有理数的类封装_第1页
第1页 / 共5页
有理数的类封装_第2页
第2页 / 共5页
有理数的类封装_第3页
第3页 / 共5页
有理数的类封装_第4页
第4页 / 共5页
有理数的类封装_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《有理数的类封装》由会员分享,可在线阅读,更多相关《有理数的类封装(5页珍藏版)》请在金锄头文库上搜索。

1、题目:编写一个 Java 应用程序,改程序中有一个 Ratinal(有理数 )类。1. Rational 类有两个 int 型的成员变量,名字分别为 numerator(分子)和denominator(分母)。2. 提供 Rational add(Rational r)方法,即有理数调用该方法与参数指定的有理数做加法运算,并返回一个 Rational 对象。3. 提供 Rational sub(Rational r)方法,即有理数调用该方法与参数指定的有理数做减法运算,并返回一个 Rational 对象。4. 提供 Rational muti(Rational r)方法,即有理数调用该方法与参

2、数指定的有理数做乘法运算,并返回一个 Rational 对象。5. 提供 Rational div(Rational r)方法,即有理数调用该方法与参数指定的有理数做加法运算,并返回一个 Rational 对象。代码:(两个文件)Rational.javapackage com.chapter4;public class Rational int numerator,denominator; /Rational类的两个成员变量分子和分母Rational()Rational(int a,int b)setNumeratorAndDenominator(a,b);void setNumerator

3、AndDenominator(int a, int b) /设置分子和分母/ int c=f(Math.abs(a),Math.abs(b);/计算最大公约数/ numerator=a/c;/ denominator=b/c;numerator=a;denominator=b;if(numerator0&denominator0)numerator=-numerator;denominator=-denominator;int getNumerator()return numerator;int getDenominator()return denominator ;/* int f(int

4、a , int b ) /求a和b 的最大公约数if(ab)int c=a;a=b;b=c;int r=a%b;while(r!=0)a=b;b=r;r=a%b;return b;*/Rational add(Rational r)int a=r.getNumerator();int b=r.getDenominator();int newNumerator=numerator*b+denominator*a;int newDenominator=denominator*b;Rational result=new Rational(newNumerator,newDenominator);re

5、turn result;Rational sub(Rational r)int a=r.getNumerator();int b=r.getDenominator();int newNumerator=numerator*b-denominator*a;int newDenominator=denominator*b;Rational result=new Rational(newNumerator,newDenominator);return result;Rational muti(Rational r)int a=r.getNumerator();int b=r.getDenominat

6、or();int newNumerator=numerator*a;int newDenominator=denominator*b;Rational result=new Rational(newNumerator,newDenominator);return result;Rational div(Rational r)int a=r.getNumerator();int b=r.getDenominator();int newNumerator=numerator*b;int newDenominator=denominator*a;Rational result=new Rationa

7、l(newNumerator,newDenominator);return result;Computer.java:package com.chapter4;public class Computer public static void main(String args) Rational r1 ;r1=new Rational(1,5); /创建分子分母分别为1 和5的有理数r1r1.denominator=5;Rational r2 ;r2=new Rational(3,2); /创建分子分母分别为3 和2的有理数r2/ System.out.println(r2+r2.getNume

8、rator()+/+r2.getDenominator();Rational result=r1.add(r2) ; /r1调用方法和r2做加法运算 int a=result.getNumerator();/ result调用方法返回自己的分子int b=result.getDenominator() ;/ result调用方法返回自己的分母double p=a;double q=b;double doubleResult=p/q;System.out.print(分数 +r1.getNumerator()+/+r1.getDenominator(); System.out.println(与

9、分数 +r2.getNumerator()+/+r2.getDenominator()+的和等于:); System.out.println(a+/+b+=+doubleResult);r1.setNumeratorAndDenominator(4, 7);r2.setNumeratorAndDenominator(-5, 20);result=r1.muti(r2);a=result.getNumerator();b=result.getDenominator();p=a;q=b;doubleResult=p/q;System.out.print(分数 +r1.getNumerator()+

10、/+r1.getDenominator(); System.out.println(与分数 +r2.getNumerator()+/+r2.getDenominator()+的积等于:); System.out.println(a+/+b+=+doubleResult); 运行结果图:知识点:学会使用类来封装对象的属性和功能。感想:我原本按照书本敲(我用的教程是 Java 大学教程(第二版) 张跃平 耿祥义 编 电子工业出版社) ,结果发现 R2=3/2 显示为 1/1,也就是当分子大于分母的时候,显示不正常。于是我加了一个打印语句用来显示检查:/System.out.println(r2+r

11、2.getNumerator()+/+r2.getDenominator();发现问题出现在构造实数时,那个除以公约数的部分我觉得不需要,而且情况不全,只写了分子小于分母的情况,然后我就把它注销了。/ int c=f(Math.abs(a),Math.abs(b);/计算最大公约数/ numerator=a/c;/ denominator=b/c;numerator=a;denominator=b;/* int f(int a , int b ) /求a和b 的最大公约数if(ab)int c=a;a=b;b=c;int r=a%b;while(r!=0)a=b;b=r;r=a%b;return b;*/PS:可以扩展练习一下:在 computer.java 增加计算有理数除法的代码在 computer.java 增加计算 1+3/2+5/3+8/5+13/8.前 20 项的代码。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号