3 Star 0 Fork 0

BESTI.IS.JAVA2018 / 20165306

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
fraction.java 3.67 KB
一键复制 编辑 原始数据 按行查看 历史
20165306 提交于 2018-04-28 09:00 . 重构fenshu
import java.util.Random;
public class fraction {
private int numerator, denominator;//numerator分子,denominator分母
public fraction(int numer, int denom) {
if ( denom == 0)
denom = 1;
if ( denom< 0) {
denom = denom * -1;
numer = numer * -1;
}
numerator = numer;
denominator = denom;
reduce();
}
public int getNumerator() {
return numerator;
}
public int getDenominator() {
return denominator;
}
public fraction reciprocal() {
return new fraction(denominator, numerator);
}
public fraction add(fraction op2)//加法,例如2/3+1/2=(2*2+1*3)/(2*3)
{
int commonDenominator = denominator * op2.getDenominator();//和的分母等于分母之积
int numerator1 = numerator * op2.getDenominator();//第一个数的分子乘以第二个数的分母
int numerator2 = op2.getNumerator() * denominator;//第二个数的分子乘以第一个数的分母
int sum = numerator1 + numerator2;//sum和的分子
System.out.print("(" + this.toString() + ")" + " + " + "(" + op2.toString() + ")" + "=");
return new fraction(sum, commonDenominator);//sum分子,commonDenominator分母
}
public fraction subtract(fraction op2)//减法,例如2/3-1/2=(2*2-1*3)/(2*3)
{
int commonDenominator = denominator * op2.getDenominator();//差的分母
int numerator1 = numerator * op2.getDenominator();
int numerator2 = op2.getNumerator() * denominator;
int difference = numerator1 - numerator2;//difference差的分子
System.out.print("(" + this.toString() + ")" + " - " + "(" + op2.toString() + ")" + "=");
return new fraction(difference, commonDenominator);//difference分子,commonDenominator分母
}
public fraction multiply(fraction op2)//乘法,例如(2/3)*(1/2)=(2*1)/(3*2)
{
int denom = denominator * op2.getDenominator();//积的分母
int numer = numerator * op2.getNumerator();//积的分子
System.out.print("(" + this.toString() + ")" + " * " + "(" + op2.toString() + ")" + "=");
return new fraction(numer, denom);//numer分子,denom分母
}
public fraction divide(fraction op2)//除法,例如(2/3)/(1/2)=(2*2)/(3*1)
{
fraction op1 = op2.reciprocal();//除数取倒数,转变为乘法
int numer = numerator * op1.getNumerator();
int denom = denominator * op1.getDenominator();
System.out.print("(" + this.toString() + ")" + " / " + "(" + op2.toString() + ")" + "=");
return new fraction(numer, denom);
}
public boolean isLike(fraction op2) {
return (numerator == op2.getNumerator() &&
denominator == op2.getDenominator());
}
public String toString() {
String result;
if (numerator == 0)
result = "0";
else if (denominator == 1)
result = numerator + "";
else
result = numerator + "/" + denominator;//输出格式:分子/分母
return result;
}
private void reduce() {
if (numerator != 0) {
int common = gcd(Math.abs(numerator), denominator);
numerator = numerator / common;
denominator = denominator / common;//约分
}
}
private int gcd(int num1, int num2) {
while (num1 != num2)
if (num1 > num2)
num1 = num1 - num2;
else
num2 = num2 - num1;
return num1;
}
public static fraction obj() {
Random ran = new Random();
return new fraction(ran.nextInt(20) - 10, ran.nextInt(20) - 10);
}
}
Java
1
https://gitee.com/BESTI-IS-JAVA-2018/20165306.git
git@gitee.com:BESTI-IS-JAVA-2018/20165306.git
BESTI-IS-JAVA-2018
20165306
20165306
master

搜索帮助