initial- - - 2023-02-26 11:30 采纳率: 86.7%
浏览 40
已结题

java代码出错分析

可以帮忙看看这个求分数加减乘除的代码哪里错了吗


package tow;
import java.util.Scanner;
public class Main {
     public static void main(String args[ ]) {
           Scanner reader=new Scanner(System.in);
         int a,b,c,d;
         a=reader.nextInt();b=reader.nextInt();
         c=reader.nextInt();d=reader.nextInt();
         Fraction f1=new Fraction(a,b);
         Fraction f2=new Fraction(c,d);
         Fraction f3=f1.add(f2);
         f3.print();
         Fraction f4=f1.sub(f2);
         f4.print();
         Fraction f5=f1.multi(f2);
         f5.print();
         Fraction f6=f1.divide(f2);
         f6.print();
                        //此处补充程序
                }
}
         
         class Fraction{
         int numerator;
         int denominator;
         Fraction(){}
         Fraction(int n,int d){
         numerator=n; denominator=d;
             }
         Fraction add(Fraction f2){
         Fraction f3=new Fraction();
         f3.numerator=numerator*f2.denominator+denominator*f2.numerator;
         f3.denominator=denominator*f2.denominator;
         return f3;
             }
         Fraction sub(Fraction f2){ //分数的减法运算
         Fraction f4=new Fraction();
         f4.numerator=numerator*f2.denominator-denominator*f2.numerator;
         f4.denominator=denominator*f2.denominator;
         return f4;
             }
         Fraction multi(Fraction f2){ //分数的乘法运算
         Fraction f5=new Fraction();
         f5.numerator=numerator*f2.numerator;
         f5.denominator=denominator*f2.denominator;
         return f5;
             }
         Fraction divide(Fraction f2){ //分数的除法运算
         Fraction f6=new Fraction();
         f6.numerator=numerator*f2.denominator;
         f6.denominator=denominator*f2.numerator;
         return f6;
             }
         void print(){
         reduction();
         //以下输出需要修改成符合题目要求的形式
         if(numerator==0)System.out.println("0");
         else if(denominator==1)System.out.println(numerator+"");
         else
         System.out.printf("%d/%d\n",numerator,denominator);
             }
         void reduction(){ //对分数进行约分,化成最简分数
         //请补充完整。此处直接对numerator和denominator进行约分
         //求分子分母的最大公约数,记为a
            int a,x,y;
         x=numerator;y=denominator;
         if(x<0) x=-x;
         if(y<0)
         {
          y=-y;denominator=-denominator;numerator=-numerator;
         a=x%y;
         while(a!=0)
         {
          x=y;y=a;a=x%y;
         }
         numerator=numerator/y;
         denominator=denominator/y; 
             }
         }
         

  • 写回答

2条回答 默认 最新

  • 阿无, 2023-02-27 10:14
    关注

    解决了么,留个方式详细说说

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月9日
  • 已采纳回答 3月1日
  • 创建了问题 2月26日

悬赏问题

  • ¥15 请问有用MZmine处理 “Waters SYNAPT G2-Si QTOF质谱仪在MSE模式下采集的非靶向数据” 的分析教程吗
  • ¥50 opencv4nodejs 如何安装
  • ¥15 adb push异常 adb: error: 1409-byte write failed: Invalid argument
  • ¥15 nginx反向代理获取ip,java获取真实ip
  • ¥15 eda:门禁系统设计
  • ¥50 如何使用js去调用vscode-js-debugger的方法去调试网页
  • ¥15 376.1电表主站通信协议下发指令全被否认问题
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥15 复杂网络,变滞后传递熵,FDA
  • ¥20 csv格式数据集预处理及模型选择