gpt4 book ai didi

java - 分数程序不工作

转载 作者:太空宇宙 更新时间:2023-11-04 14:14:50 25 4
gpt4 key购买 nike

我正在为学校编写一个程序,用于进行分数乘法和除法运算。当我运行当前代码时,将分数 2/4 和 4/6 相乘得到 0/1。当我单独测试 2/4 和 4/6 分数的分子/分母的分量时,它给了我 0 1 0 1。

这是输出和代码,首先是代码。

import java.util.*;
import java.util.Scanner.*;

class Fraction
{
protected static int numerator, denominator;

public static void main(String args[])
{
System.out.println("Chp. 25 LAB 1");
System.out.println();


// main commands for testing first class Fraction

Fraction f1 = new Fraction(2,4);
System.out.println("numerator of fraction1 is " + f1.getNum());
System.out.println("denominator of fraction1 is " + f1.getDen());
f1.displayFraction();
f1.alterFraction(3,6);
f1.displayFraction();


// main commands for testing second class FractionArithmetic

f1 = new Fraction(2,4);
Fraction f2 = new Fraction(4,6);

FractionArithmetic f3 = new FractionArithmetic();
f3.multFracts(f1, f2);
f3.display();

f3 = new FractionArithmetic();
f3.divFracts(f1, f2);
f3. display();


// main commands for testing second class FractionOperations

f1 = new Fraction(2,4);
f2 = new Fraction(4,6);

FractionOperations fract = new FractionOperations();
fract.multFracts(f1, f2);
fract.display();
fract.reduce();
fract.getFraction().displayFraction();

fract = new FractionOperations();
fract.divFracts(f1, f2);
fract.display();
fract.reduce();
fract.getFraction().displayFraction();
}

Fraction(int n, int d)
{
numerator = n;
denominator = d;
}
public int getNum()
{
return numerator;
}
public int getDen()
{
return denominator;
}
public void alterFraction(int n, int d)
{
numerator = n;
denominator = d;
}
public void displayFraction()
{
System.out.println("Fractioni = " + numerator + "/" + denominator);
}
}

class FractionArithmetic
{
protected Fraction fraction;

FractionArithmetic()
{
fraction = new Fraction(0, 1);
}
FractionArithmetic(int n, int d)
{
fraction = new Fraction(n, d);
}
public void multFracts(Fraction a, Fraction b)
{
// System.out.println(a.getNum() + " " + a.getDen() + " " + b.getNum() + " " + b.getDen());
fraction.alterFraction(a.getNum() * b.getNum(), a.getDen() * b.getDen());
}

public void divFracts(Fraction a, Fraction b)
{
fraction.alterFraction(a.getNum() * b.getDen(), a.getDen() * b.getNum());
}
public void display()
{
System.out.println("This is an unreduced fraction");
fraction.displayFraction();
}
public Fraction getFraction()
{
return fraction;
}
}

class FractionOperations extends FractionArithmetic
{
Fraction reducedFraction;

FractionOperations()
{
reducedFraction = new Fraction(0, 1);
}
FractionOperations(int n, int d)
{
super(n, d);
reducedFraction = new Fraction(n, d);
}
public void reduce()
{
int gcf = getGCF(reducedFraction.numerator, reducedFraction.denominator);
fraction.alterFraction(reducedFraction.numerator / gcf, reducedFraction.denominator / gcf);
}
private static int getGCF(int a, int b)
{
int gcf = 1;
a = Math.abs(a);
b = Math.abs(b);
if(a > b)
{
int dummy = b;
b = a;
a = dummy;
}
for(int i = 1; i <= b; i++)
{
if(b % i == 0 && a % i == 0)
gcf = i;
}
return gcf;
}
public void display()
{
reducedFraction.displayFraction();
fraction.displayFraction();
}
public Fraction getFraction()
{
return reducedFraction;
}

}

numerator of fraction1 is 2
denominator of fraction1 is 4
Fractioni = 2/4
Fractioni = 3/6
Fractioni = 0/1
This is an unreduced fraction
Fractioni = 0/0
Fractioni = 0/1
Fractioni = 0/1
Fractioni = 0/1
Fractioni = 0/0
Fractioni = 0/0
Fractioni = 0/0

最佳答案

也许,是因为你的类让它除以 2/4 除以 3/6。我认为编程是按字面意思使用 2/4 这样的数字,而不是单独产生 1 和 0 这样的数字。

关于java - 分数程序不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27883177/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com