用Java创建一个Fraction类执行分数运算。要求如下: ①定义类的private成员变量:分子f1 和分母f2; ②提供构造方法,创建分数; ③提供两个分数相加的运算方法; ④提供两个分数相减的运算方法; ⑤提供两个分数相乘的运算方法; ⑥提供两个分数相除的运算方法; ⑦以a/b的形式打印Fraction数; ⑧以浮点数的形式打印Fraction数; ⑨主程序中创建分数,完成分数运算,输出结果。
时间: 2024-02-03 10:14:14 浏览: 72
设计一个表示分数的类Fraction。这个类用两个int类型的变量分别表示分子和分母。
5星 · 资源好评率100%
以下是一个简单的Fraction类实现:
```java
public class Fraction {
private int f1; // 分子
private int f2; // 分母
public Fraction(int f1, int f2) {
this.f1 = f1;
this.f2 = f2;
}
// 求最大公约数
private int gcd(int a, int b) {
if (b == 0) {
return a;
}
return gcd(b, a % b);
}
// 将分数进行约分
private void simplify() {
int gcd = gcd(f1, f2);
f1 /= gcd;
f2 /= gcd;
}
// 分数相加
public Fraction add(Fraction other) {
int newF1 = this.f1 * other.f2 + other.f1 * this.f2;
int newF2 = this.f2 * other.f2;
Fraction result = new Fraction(newF1, newF2);
result.simplify(); // 对结果进行约分
return result;
}
// 分数相减
public Fraction subtract(Fraction other) {
int newF1 = this.f1 * other.f2 - other.f1 * this.f2;
int newF2 = this.f2 * other.f2;
Fraction result = new Fraction(newF1, newF2);
result.simplify(); // 对结果进行约分
return result;
}
// 分数相乘
public Fraction multiply(Fraction other) {
int newF1 = this.f1 * other.f1;
int newF2 = this.f2 * other.f2;
Fraction result = new Fraction(newF1, newF2);
result.simplify(); // 对结果进行约分
return result;
}
// 分数相除
public Fraction divide(Fraction other) {
int newF1 = this.f1 * other.f2;
int newF2 = this.f2 * other.f1;
Fraction result = new Fraction(newF1, newF2);
result.simplify(); // 对结果进行约分
return result;
}
// 以a/b的形式打印分数
public String toString() {
return f1 + "/" + f2;
}
// 以浮点数的形式打印分数
public double toDouble() {
return (double) f1 / f2;
}
public static void main(String[] args) {
Fraction f1 = new Fraction(2, 3);
Fraction f2 = new Fraction(1, 4);
System.out.println("f1 = " + f1);
System.out.println("f2 = " + f2);
System.out.println("f1 + f2 = " + f1.add(f2));
System.out.println("f1 - f2 = " + f1.subtract(f2));
System.out.println("f1 * f2 = " + f1.multiply(f2));
System.out.println("f1 / f2 = " + f1.divide(f2));
System.out.println("f1 as double = " + f1.toDouble());
}
}
```
输出结果如下:
```
f1 = 2/3
f2 = 1/4
f1 + f2 = 11/12
f1 - f2 = 5/12
f1 * f2 = 1/6
f1 / f2 = 8/3
f1 as double = 0.6666666666666666
```
阅读全文