java生成有理数_Java 有理数设计
1.有理数类的代码
package R1;
public class Rational{
private int numerator;//分子
private int denominator;//分母
public int getNumerator() //获取分子
{
return numerator;
}
public int getDenominator()//获取分母
{
return denominator;
}
public Rational() {//无参构造函数
this(0,1);
}
public Rational(int numerator,int denominator)//构造函数
{
int gcd=gcd(numerator,denominator);
this.numerator=((denominator>0)?1:-1)*numerator/gcd;
this.denominator=Math.abs(denominator)/gcd;
}
private static int gcd(int numerator,int denominator)//求最大公约数
{
int n1=Math.abs(numerator);
int n2=Math.abs(denominator);
int tmp;
while (n2 != 0) {
tmp = n1 % n2;
n1 = n2;
n2 = tmp;
}
return n1;
}
public Rational add(Rational secondRational)//加法
{
int n=this.numerator*secondRational.getDenominator()+this.denominator*secondRational.getNumerator();
int d=this.denominator*secondRational.getDenominator();
return new Rational(n,d);
}
public Rational subtract(Rational secondRational)//减法
{
int n=this.numerator*secondRational.getDenominator()-this.denominator*secondRational.getNumerator();
int d=this.denominator*secondRational.getDenominator();
return new Rational(n,d);
}
public Rational multiply(Rational secondRational)//乘法
{
int n=this.numerator*secondRational.getNumerator();
int d=this.denominator*secondRational.getDenominator();
return new Rational(n,d);
}
public Rational divide(Rational secondRational)//除法
{
int n=this.numerator*secondRational.getDenominator();
int d=this.denominator*secondRational.getNumerator();
return new Rational(n,d);
}
public boolean equals(Object secondRational){//判断是否相等
if((this.subtract((Rational)(secondRational))).getNumerator()==0){
return true;
}
else return false;
}
public int compare(Rational secondRational)//比较大小
{
if (this.subtract(secondRational).getNumerator()>0)
return 1;
else if (this.subtract(secondRational).getNumerator()==0)
return 0;
else
return -1;
}
public String toString()//转换为string类型
{
if (this.denominator==1)
{
return this.numerator+"";
}else{
return this.numerator+"/"+this.denominator;
}
}
public int intValue() //将Rational转换为int型
{
return (int)doubleValue();
}
public long longValue() //将Rational转换为long型
{
return (long)doubleValue();
}
public float floatValue() //将Rational转换为float型
{
return (float)doubleValue();
}
public double doubleValue() //将Rational转换为double型
{
return this.numerator*1.0/this.denominator;
}
}
2.测试的代码
package R1;
import R1.Rational;
public class Main {
public static void main(String[] args) {
Rational x=new Rational(5,6);
Rational y=new Rational(2,3);
System.out.println("有理数的分数形式:"+x.toString());//输出x的分数形式
System.out.println("有理数相减得:"+y.toString());//输出y的分数形式
System.out.println("两有理数相加得:"+x.add(y));//输出两分数相加的结果
System.out.println("两有理数相减得:"+x.subtract(y));//输出两分数相减的结果
System.out.println("两有理数相乘得:"+x.multiply(y));//输出两分数相乘的结果
System.out.println("两有理数相除得:"+x.divide(y));//输出两分数相除的结果
System.out.println("两有理数是否相等:"+x.equals(y));//判断两分数是否相等
System.out.println("两有理数的大小关系:"+x.compare(y));//比较两分数大小
}
}
运行结果截图
3.描述怎么与c语言的有理数代码相比较,为什么你设计的类更加面向对象?
c语言更加的面向过程,需要考虑写什么样的函数来完成它,而Java更多的是对类的编写,很多都是直接调用即可,因此Java更加面向对象。
4.别人如何复用你的代码?
虽然别人编写的是不同包的类,但是只要导入自己编写的有理数类的包,就可以复用我的代码了。
5.别人的代码是否依赖你的有理数类的属性?当你的有理数类的属性修改时,是否会影响他人调用你有理数类的代码?
别人的代码是依赖于我的有理数类的属性,但是我的有理数类的属性为private型,所以不会影响我有理数类的代码。
6.有理数类的public方法是否设置合适?为什么有的方法设置为private?
合适,因为有的方法只能运用在类中,不能随便更改,保证数据的安全性,而有的方法希望可以被使用,因此就通过public方法来访问。
java生成有理数_Java 有理数设计相关推荐
- java 生成随机数_Java 生成随机数的 N 种方法
原标题:Java 生成随机数的 N 种方法 www.baeldung.com/java-generating-random-numbers 1.引言 本文将探讨用 Java 生成随机数的不同方法. 2 ...
- java闹钟程序设计_JAVA课程设计_闹钟的设计与实现项目-报告_附源代码.doc
JAVA课程设计_闹钟的设计与实现项目-报告_附源代码 第2章 MACROBUTTON AcceptAllChangesInDoc [双击此处键入1级标题] PAGE 2 - PAGE 1 - .. ...
- java 密码生成器_Java课程设计-随机密码生成器
1.团队课程设计博客链接 2.个人负责模板 设计程序运行界面,数据的输入,判断数据输入类型的错误,判断密码类型是否选择. 3.自己的代码提交记录截图 4自己负责模块或任务详细说明 (一)总体设计 1. ...
- java软件架构设计方案_Java软件架构设计慨论
开始之初的架构设计决定着软件产品的生死存亡."好的开始相当于成功一半". 开始的架构设计也是最难的,需要调研同类产品的情况以及技术特征,了解当前世界上对这种产品所能提供的理论支持和 ...
- java 生成缩略图_Java实现等比例缩略图
1.简介:Web应用为上传图片生成缩略图是常见的基本功能,通过缩略图生成提高了信息浏览时的性能,在保证用户使用体验的同时减少了数据传输量. 2.实现图片等比例缩略图生成,方式及相关工具介绍: (1)T ...
- java生成密码_java生成密码生成 | 学步园
一.根据当前日期生成MD5加密密码 package com.test; import java.security.MessageDigest; import java.text.SimpleDateF ...
- java 坦克大战_java课程设计之坦克大战
本文实例为大家分享了java坦克大战的具体代码,供大家参考,具体内容如下 环境要求: 操作系统:Windows 10 JAVA虚拟机:JDK1.8以上 开发环境:Eclipse(4.5以上) 功能提示 ...
- java 生成拼音_java工具-常用汉语转拼音库Pinyin4j 、tinypinyin、JPinyin
Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换,拼音输出格式可以定制,在项目中经常会遇到需求用户输入汉字后转换为拼音的场景,这时候Pinyin4j就可以派上用场 有自己私服的可以 ...
- java生成条码_Java生成商品条形码
之前没有使用过这个,现在使用JBarcode生成商品条形码,工作之前的准备工作: Eclipse: Eclipse Java EE IDE for Web Developers. Version: H ...
- java atm柜机_java课程设计-ATM柜机模拟程序.doc
java课程设计-ATM柜机模拟程序 课程设计(大作业)报告课程名称:面向对象程序设计课程设计 设计题目:ATM柜员机模拟程序 院 系:信息技术学院 班 级: 设 计 者: 学 号: 指导教师: 设计 ...
最新文章
- java中c/s模式传送数据
- 电气工程师学python_Python 在电气工程及其自动化上有哪些应用?
- 使用AXIS开发Web Service的示例
- 转:谈谈Unicode编码,简要解释UCS、UTF、BMP、BOM等名词
- Hibernate关联关系映射-----单向一对一映射配置
- android中tools的含义及用法
- CF1228——记一次和紫名失之交臂的CF
- 中国生产力促进中心”十四五”规划与发展规模分析报告2022~2028年
- 实现京东商城地址选择效果(效果还挺一致的)
- Siggraph三角网格变形之拉普拉斯变换
- mysql查询一天内,一周,一个月内的消费记录
- 人们已经离不开5G了,商用三年半,中国5G发展迈向新征程,产业发展全面提速!
- 字节跳动头条2022测试开发岗 3+1 面经+经验分享(收到offer,入职月薪30K)
- 超详细Netty入门
- tensor如何实现转置_pytorch tensor 变换
- Tekton 的供应链安全工具 Chains
- 运维工程师使用的运维平台和工具包括:
- 搭建指标体系的底层逻辑
- 怎么在应用中实现自助报表功能?
- 2020 最受 IT 公司欢迎的 30 款开源软件
热门文章
- 【计算机网络】-- 动态分配信道:随机访问介质访问控制(ALOHA协议、CSMA协议、CSMA/CD协议、CSMA/CA协议)
- 基于x86汇编的飞机大战
- 使用python裁剪图片
- 常识推理问答相关最新研究进展
- 双光耦开关电源电路图_几种常见开关电源电路图
- 模拟摄像头和网络摄像头_没有网络摄像头没问题
- SARS-CoV2_ARTIC_Illumina新冠病毒分型和突变分析
- 【斯坦福大学公开课CS224W——图机器学习】二、图机器学习中的传统方法(2)
- 高效能人士的七个习惯——由内而外全面造就自己
- Python 识别图片中表格