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日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效