展开全部
完整程序可供参考:e68a8462616964757a686964616f31333262376565错误信息你自己处理
public class Fraction {
private int numerator = 0; //分子
private int denominator = 0; //分母
//setter and getter
public int getNumerator() {
return numerator;
}
public void setNumerator(int numerator) {
this.numerator = numerator;
}
public int getDenominator() {
return denominator;
}
public void setDenominator(int denominator) throws Exception {
if(denominator == 0) {
throw new Exception();
}
this.denominator = denominator;
}
/**
* 默认构造函数
*/
Fraction() {}
/**
* 构造函数
*
* @param numerator 分子
* @param denominator 分母
* @throws Exception
*/
Fraction(int numerator, int denominator) throws Exception{
if(denominator == 0) {
throw new Exception();
}
this.denominator = denominator;
this.numerator = numerator;
}
/**
* 分数加法
* @param fraction
* @return 结果
* @throws Exception
*/
public Fraction addition(Fraction fraction) throws Exception {
if(denominator == 0 || fraction.getDenominator() == 0) {
throw new Exception();
}
int commonDivisor = maxCommonDivisor(denominator, fraction.getDenominator());
numerator = numerator * (fraction.getDenominator() / commonDivisor) + fraction.getNumerator() * (denominator / commonDivisor);
denominator = denominator * fraction.getDenominator() / commonDivisor;
return simplestFraction(this);
}
/**
* 分数减法
* @param fraction
* @return 结果
* @throws Exception
*/
public Fraction substruction(Fraction fraction) throws Exception {
if(denominator == 0 || fraction.getDenominator() == 0) {
throw new Exception();
}
int commonDivisor = maxCommonDivisor(denominator, fraction.getDenominator());
numerator = numerator * (fraction.getDenominator() / commonDivisor) - fraction.getNumerator() * (denominator / commonDivisor);
denominator = denominator * fraction.getDenominator() / commonDivisor;
return simplestFraction(this);
}
/**
* 分数乘法
* @param fraction
* @return 结果
* @throws Exception
*/
public Fraction multiplication(Fraction fraction) throws Exception {
if(denominator == 0 || fraction.getDenominator() == 0) {
throw new Exception();
}
numerator = numerator * fraction.getNumerator();
denominator = denominator * fraction.getDenominator();
return simplestFraction(this);
}
/**
* 分数除法
* @param fraction
* @return 结果
* @throws Exception
*/
public Fraction division(Fraction fraction) throws Exception {
if(denominator == 0 || fraction.getDenominator() == 0 || fraction.getNumerator() == 0) {
throw new Exception();
}
numerator = numerator * fraction.getDenominator();
denominator = denominator * fraction.getNumerator();
return simplestFraction(this);
}
/**
* 计算最大公约数
*
* @param num1 数字一
* @param num2 数字二
* @return 数字一和数字二的最大公约数
*/
public int maxCommonDivisor(int num1, int num2) {
if(num1 == 0 || num2 == 0) {
return 1;
}
if(num1 % num2 == 0) {
return num2;
}else {
int temp = num1 % num2;
num1 = num2;
num2 = temp;
return maxCommonDivisor(num1, num2);
}
}
/**
* 最简分式
* @param fraction
* @return 最简分式
* @throws Exception
*/
public Fraction simplestFraction(Fraction fraction) throws Exception {
int commonDivisor = maxCommonDivisor(fraction.getDenominator(), fraction.getNumerator());
fraction.setDenominator(fraction.getDenominator() / commonDivisor);
fraction.setNumerator(fraction.getNumerator() / commonDivisor);
if(fraction.getDenominator() < 0) {
fraction.setNumerator(fraction.getNumerator() * (-1));
fraction.setDenominator(fraction.getDenominator() * (-1));
}
return fraction;
}
@Override
public String toString() {
StringBuffer sb = new StringBuffer();
sb.append("分式");
sb.append(numerator);
sb.append("/");
sb.append(denominator);
sb.append("的值是");
sb.append((double)numerator / denominator);
return sb.toString();
}
}
本回答由网友推荐
已赞过
已踩过<
你对这个回答的评价是?
评论
收起