这个编译错误是因为在你的代码中没有导入Scanner类。请确保在文件的顶部添加以下行:
import java.util.Scanner;
这样就可以正常使用Scanner类了。下面是修改后的代码: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(); // 约分和调整负号 } // 获取分子 public int getNumerator() { return numerator; } // 获取分母 public int getDenominator() { return denominator; } // 将分数转换为double类型 public double toDouble() { return (double) numerator / denominator; } // 将自身和另一个分数相加,返回新的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); } // 将自身和另一个分数相乘,返回新的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 (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 小助理,如未能正确解答您的问题,请继续追问。 |