java生成有理数_java-00设计-有理数类
1.有理数类代码展示
package Rational;
public class Rational {
private int numrator;//分子
private int denominator;//分母
public int getNumerator() {
return numrator;
}
public int getDenominator() {
return denominator;
}
public Rational()
{
this.denominator=1;
this.numrator=0;
}
public Rational (int num) {//整数
if(num<0)
{
this.denominator=1;
this.numrator=-num;
}
else
{
this.denominator=1;
this.numrator=num;
}
}
public Rational(int numrator,int denominator) {//分数
if(denominator == 0) {
System.out.println("错误输入!分母不能为0!");
System.exit(1);
}
int gcd = getGcd(numrator, denominator);
this.denominator=denominator/gcd;
this.numrator=numrator/gcd;
}
private int getGcd(int v1,int v2)
{
int temp=0;
if(v1
temp=v1;
v1=v2;
v2=temp;
}
temp=v1%v2;
while(temp!=0)
{
v1=v2;
v2=temp;
temp=v1%v2;
}
return v2;
}
public Rational add(Rational a) {//相加
int num=a.numrator*this.denominator+a.denominator*this.numrator;//分子通分相加
int den=a.denominator*this.denominator;//分母通分
Rational now=new Rational(num,den);
return now;
}
public Rational subtract(Rational a){//相减
int num=this.numrator*a.denominator-this.denominator*a.numrator;
int den=a.denominator*this.denominator;
Rational now=new Rational(num,den);
return now;
}
public Rational multply(Rational a) {//相乘
int num=a.numrator*this.numrator;
int den=a.denominator*this.denominator;
Rational now=new Rational(num,den);
return now;
}
public Rational divide(Rational a)//相除
{
int num=a.numrator*this.denominator;
int den=a.denominator*this.numrator;
Rational now=new Rational(num,den);
return now;
}
public Rational abs()//绝对值
{
int num,den;
if(this.numrator<0)
num=-this.numrator;
else
num=this.numrator;
if(this.denominator<0)
den=-this.denominator;
else
den=this.denominator;
Rational now=new Rational(num,den);
return now;
}
public int compare(Rational a) {//比大小
if(this.denominator<0&&a.denominator>0)
this.denominator=-this.denominator;
if(this.denominator>0&&a.denominator<0)
{
a.numrator=-a.numrator;
a.denominator=-a.denominator;
}
int num1=this.numrator*a.denominator;
int num2=this.denominator*a.numrator;
if(num1>num2)
return 1;
else if(num1
return 2;
else
return 0;
}
public String toString() {
if(this.denominator == 1) {
return " " + this.numrator;
}
else {
return " " + this.numrator + "/" + this.denominator;
}
}
}
2.测试代码
package temp;
import Rational.Rational;
public class test {
public static void main(String[] args)
{
Rational r1 = new Rational(1,2);
Rational r2 = new Rational(3,5);
System.out.println("r1 = " + r1.toString() + " ; " + "r2 = " + r2.toString());
System.out.println("r1 + r2 = " + r1.add(r2).toString());
System.out.println("r1 - r2 = " + r1.subtract(r2).toString());
System.out.println("r1 * r2 = " + r1.multply(r2).toString());
System.out.println("r1 / r2 = " +r1.divide(r2).toString());
System.out.println("abs(r1) = " + r1.abs().toString());
System.out.println("abs(r2) = " + r2.abs().toString());
System.out.println("r1 compare r2 = " + r1.compare(r2)+" "+"1表示r1大,2表示r2大,0表示一样大");
}
}
测试结果
3.类名、变量名命名需符合Java规范
代码中变量命名时都尽量采用驼峰命名法,并且整段代码经过eclipse的视图调整,且每个需要返回值的函数都有返回值
尝试描述怎么与c语言的有理数代码相比较,为什么你设计的类更加面向对象?
首先,我们在进行c语言编程代码时如果存在如上面代码一样多的函数调用时我们会考虑一个问题,就是参数传递,我们一般都是一层套一层传参,或者使用全局变量,导致代码的在使用时就非常复杂,但是我们的面向对象设计着重在于“面向对象”,只要拥有有理数类的主体代码存在,可以任意输入各种测试数据,并且整个代码关系并不紧紧相连,不会出现一个函数出问题(非主要)整个代码出问题的情况
尝试从代码复用的角度来描述你设计的有理数类。从几个方面讨论。
别人如何复用你的代码?
只需要下载我的package Rational,导入后自己使用测试数据就好
别人的代码是否依赖你的有理数类的属性?当你的有理数类的属性修改时,是否会影响他人调用你有理数类的代码?
依赖,我的有理数类的属性存在局限性,所以当我去修改而不是扩大它的包含范围,那么别人使用也只能随着我的修改而变
有理数类的public方法是否设置合适?为什么有的方法设置为private?
我觉得合适,我的public方法都是为了让人能够调用这些函数的来实现他们的目的,而在约分的getDcd中,我将之设为private是因为它是我用来辅助目的达成的存在,并不需要被他人使用,只需要我自己知道就好
java生成有理数_java-00设计-有理数类相关推荐
- 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生成随机数(random()和Random类)
在 Java 中要生成一个指定范围之内的随机数字有两种方法:一种是调用 Math 类的 random() 方法,一种是使用 Random 类. Random 类提供了丰富的随机数生成方法,可以产生 b ...
- java rectangle 单位_Java作业(创建Rectangle类).doc
<Java语言>课程作业 (第一次) 题 目 学 院 专 业 班 别 学 号 姓 名 2010年10月8日 一.课程题目 12.创建一个名为Rectangle的类来表示一个使用宽度和高度来 ...
- 网上选课系统java大作业_Java面向对象设计大作业——公选课选课系统
功能调查与系统功能框架图 功能 本系统模拟公选课选课系统,由学生或管理员使用该系统,管理员可以自定义增加或删除课程,学生可以进行选课和查看已选课程. 系统功能框架图 类的设计(UML类图) 类说明 A ...
- java 抽象类 模板_Java学习day21-抽象类(abstract class)和模板设计模式(TemplateMethod)...
一.抽象类(abstract class) 1.随着继承层次中一个个新子类的定义,类变的越来越具体,而父类则更一般.更通用.类的设计应该保证父类和子类能够共享特征.有时需要将一个父类设计的非常抽象,以 ...
- java 调用弗雷_JAVA API(一)String类和StringBuffer类
1.String类和StringBuffer类 在程序中经常会用到字符串,所谓的字符串就是指一连串的字符,它是由多个单个字符连接而成的.字符串中可以包含任意字符,这些字符必须包含在一对双引号" ...
- java 动态更新_java动态更新枚举类
工作中遇到需要对枚举类的值进行动态更新 手动改不现实也不方便 现记录下来方便以后学习使用 1.在工程utils包中添加动态更新枚举类得工具类(根据自己得项目,放到指定位置调用就可以) 2.一开始陷入了 ...
- java生成圆_java工具类-java实现 生成圆头像
1.创建RoundHeadImgUtils工具类 package com.mrd.utils; import javax.imageio.ImageIO; import java.awt.*; imp ...
- java 静态类 安全_Java静态static工具类线程安全问题研究
针对静态方法有以下一些前提: 静态方法和实例方法的区别是静态方法只能引用静态变量,静态方法通过类名来调用,实例方法通过对象实例来调用 每个线程都有自己的线程栈,栈与线程同时创建,每一个虚拟机线程都有自 ...
最新文章
- SQL 数据库 存储过程 视图
- Navicat使用Instant Client创建连接到Oracle数据库的正确姿势
- 计算机基础知识作业答案,计算机基础与应用作业答案ID及计算机基础知识笔试题.doc...
- Jazz揭秘:下一代开发平台常见问题百科全说
- OptaPlanner - 把example运行起来(运行并浅析Cloud balancing)
- iOS绘圆形图-CGContextAddArc各参数说明
- JS Ajax异步请求发送列表数据后面多了[]
- 漫步数理统计十七——条件分布与期望
- 腾讯手机QQ更新:最想要的功能终于实现了!
- C++自定义异常处理
- 拼多多砍价群大王:拼多多为什么3年就能上市?
- 听说 Python 生成二维码很简单,说的好像我Java 很复杂一样。
- 京都计算机学院放假时间表,2018年官方放假安排时间一览表
- 服务器被攻击网站打不开解决方案
- 【修真院PM小课堂】流程图
- 基于JAVA广西科技大学第一附属医院陪护椅管理计算机毕业设计源码+数据库+lw文档+系统+部署
- 我的世界网易怎么调成java,网易版我的世界如何将单机地图改为联机地图
- 清览云题库--软件工程 ---第9章结构化实现及软件维护练习
- 读《反脆弱性》:凹凸性资料搜集
- [转]如何度过硕士研究生阶段——浅谈硕士期间时间规划问题
热门文章
- 曦力音视频转换专家-免费全能视频转换器(支持GPU加速)
- 偏微分方程简明教程第三章部分答案
- spatialreg | 空间计量模型的结果解读——直接效应和间接效应
- Redis学习笔记 - Lua脚本(2) - Lua脚本的实现
- 新发现的一个pyqt5的绘图控件QCustomPlot2
- Python程序——有一段英文文本,其中有单词连续重复了2次,编写程序检查重复的单词并只保留一个。
- 计算机网络教程-自顶向下方法(计算机网络概述)
- AndroidPn客户端的使用和问题记录
- ooqzxdJeroboam v7.30 Bilingual 1CD瑰就
- CentOs下各种压缩格式的创建及解压缩