付大帅 发表于 2023-12-15 17:13
能否写成整体代码形式
当然可以,以下是整体代码形式的修复后的版本:
import java.util.Scanner;
class Fraction {
private int numerator;// 分子
private int denominator;// 分母
// 构造方法
public Fraction(int a, int b) {
if (b == 0) {
System.out.println("错误,分母不能为0");
return;
}
numerator = a;
denominator = b;
yuefen();
}
// 将分数转换为double
public double toDouble() {
return (double) numerator / denominator;
}
// 将自身和r的分数相加,产生一个新的Fraction的对象
public Fraction plus(Fraction r) {
int newNumerator = this.numerator * r.denominator + this.denominator * r.numerator;
int newDenominator = this.denominator * r.denominator;
return new Fraction(newNumerator, newDenominator);
}
// 将自身和r的分数相乘,产生一个新的Fraction的对象
public Fraction multiply(Fraction r) {
int newNumerator = this.numerator * r.numerator;
int newDenominator = this.denominator * r.denominator;
return new Fraction(newNumerator, newDenominator);
}
// 输出分数
public void print() {
if (denominator == 0) {
System.out.println("错误,分母不能为0");
return;
}
if (numerator == 0) {
System.out.println(0);
return;
}
if (denominator == 1) {
System.out.println(numerator);
return;
}
System.out.println(numerator + "/" + denominator);
}
// 约分和调整负号
private void yuefen() {
int aa = (int) Math.abs(numerator);
int ab = (int) Math.abs(denominator);
if (numerator * denominator >= 0) { // 调整负号
numerator = aa;
denominator = ab;
} else {
numerator = -aa;
denominator = ab;
}
for (int i = ((aa < ab) ? aa : ab); i > 1; i--) { // 求最大公因数,并约分
if (numerator % i == 0 && denominator % i == 0) {
numerator /= i;
denominator /= i;
break;
}
}
}
}
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
Fraction a = new Fraction(in.nextInt(), in.nextInt());
Fraction b = new Fraction(in.nextInt(), in.nextInt());
a.print();
b.print();
a.plus(b).print();
a.multiply(b).plus(new Fraction(5, 6)).print();
a.print();
b.print();
in.close();
}
}
请尝试使用修复后的代码,再次运行测试用例。如果仍然无法通过,请将具体的出错信息告诉我,我会继续帮助您调试。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 第1/5条 运行结果
运行结果正确
第2/5条 运行结果
运行结果错误,该组未通过
第3/5条 运行结果
运行结果错误,该组未通过
第4/5条 运行结果
运行结果错误,该组未通过
第5/5条 运行结果
运行结果正确 付大帅 发表于 2023-12-15 17:26
第1/5条 运行结果
运行结果正确
第2/5条 运行结果 ...
非常抱歉给出的代码仍然有误。以下是修复后的整体代码版本:import java.util.Scanner;class Fraction { private int numerator;// 分子 private int denominator;// 分母 // 构造方法 public Fract
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 能否写成完整代码 付大帅 发表于 2023-12-15 17:28
能否写成完整代码
当然可以,以下是完整修复后的代码:
import java.util.Scanner;
class Fraction {
private int numerator;// 分子
private int denominator;// 分母
// 构造方法
public Fraction(int a, int b) {
numerator = a;
denominator = b;
yuefen();// 约分和调整负号
}
// 将分数转换为double
public double toDouble() {
return (double) numerator / denominator;
}
// 分数相加
public Fraction plus(Fraction r) {
int newNumerator = this.numerator * r.denominator + r.numerator * this.denominator;
int newDenominator = this.denominator * r.denominator;
return new Fraction(newNumerator, newDenominator);
}
// 分数相乘
public Fraction multiply(Fraction r) {
int newNumerator = this.numerator * r.numerator;
int newDenominator = this.denominator * r.denominator;
return new Fraction(newNumerator, newDenominator);
}
// 输出分数
public void print() {
if (denominator == 0) {
System.out.println("错误,分母不能为0");
} else if (numerator == 0) {
System.out.println(0);
} else if (denominator == 1) {
System.out.println(numerator);
} else {
System.out.println(numerator + "/" + denominator);
}
}
// 约分和调整负号
private void yuefen() {
int aa = (int) Math.abs(numerator);
int ab = (int) Math.abs(denominator);
if (numerator * denominator >= 0) {
numerator = aa;
denominator = ab;
} else {
numerator = -aa;
denominator = ab;
}
for (int i = ((aa < ab) ? aa : ab); i > 1; i--) {
if (numerator % i == 0 && denominator % i == 0) {
numerator /= i;
denominator /= i;
break;
}
}
}
}
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
Fraction a = new Fraction(in.nextInt(), in.nextInt());
Fraction b = new Fraction(in.nextInt(), in.nextInt());
a.print();
b.print();
a.plus(b).print();
a.multiply(b).plus(new Fraction(5, 6)).print();
a.print();
b.print();
in.close();
}
}
请重新尝试运行并检查结果是否正确。如果仍然有问题,请告诉我具体的错误信息,我会尽力帮助您解决。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页:
1
[2]