【问题标题】:Main Method for My Rational Code我的 Rational 代码的主要方法
【发布时间】:2017-06-13 22:23:12
【问题描述】:

所以我已经完成了有理数的加法、减法等有理数测试的代码。我一直在尝试制作实际输出代码的主类。

这是我的 Rational 类代码:

package rational;

public class Rational {

    private static int gcd(int u, int v) {
        if (u == 0) {
            return v;
        } else if (v == 0) {
            return u;
        } else if (u == 1 || v == 1) {
            return 1;
        }
        int temp;
        while (v != 0) {
            temp = u % v;
            u = v;
            v = temp;
        }
        return u;
    }

    private static Rational reduce(Rational num) {
        int gcd = gcd(num.getNumerator(), num.getDenominator());
        return new Rational(num.getNumerator() / gcd, num.getDenominator() / gcd);
    }

    private static Rational neg(Rational num) {
        return new Rational(-(num.getNumerator()), num.getDenominator());
    }

    public static Rational add(Rational a, Rational b) {
        return reduce(new Rational(a.getNumerator() * b.getDenominator() + a.getDenominator() * b.getNumerator(), a.getDenominator() * b.getDenominator()));
    }

    public static Rational subtract(Rational a, Rational b) {
        return add(a, neg(b));
    }

    public static Rational multiply(Rational a, Rational b) {
        return reduce(new Rational(a.getNumerator() * b.getNumerator(), a.getDenominator() * b.getDenominator()));
    }

    public static Rational divide(Rational a, Rational b) {
        return multiply(a, new Rational(b.getDenominator(), b.getNumerator()));
    }

    public static String getString(Rational num) {
        return String.format("%d/%d", num.getNumerator(), num.getDenominator());
    }

    public static String getFloatString(Rational num) {
        return getFloatString(num, 6);
    }

    public static String getFloatString(Rational num, int fixedTo) {
        return String.format("%." + fixedTo + "f", num.getNumerator() / ((float) num.getDenominator()));
    }

    private final int numerator;
    private final int denominator;

    public Rational() {
        this(0, 1); // Note that division by zero is not allowed
    }

    public Rational(int numerator, int denominator) {
        if (denominator == 0) {
            throw new ArithmeticException("Division by zero");
        }
        this.numerator = numerator;
        this.denominator = denominator;
    }

    public int getNumerator() {
        return numerator;
    }

    public int getDenominator() {
        return denominator;
    }

}

【问题讨论】:

    标签: java object main rational-number


    【解决方案1】:

    首先,如果你想在 Rational 类中创建一个 main 方法,然后调用你的方法:

    你可以像这样创建一个主方法:

    public static void main(String[] args) {
        //Create a Rational with an empty constructor
        Rational r1 = new Rational();
        int numerator = 1, denominator = 2; 
        //Create a Rational with an the second constructor that take two int
        Rational r2 = new Rational(numerator, denominator);
        //then you can use your methods like this.
        r2.gcd(numerator, numerator);
    }
    

    就像您可以调用您的方法一样,该方法采用具有相同对象 r2 的 Rational 对象:

    r1.reduce(r2);
    

    r2.reduce(r2);
    

    注意

    如果您想在另一个类中创建主方法,请确保将您的方法更改为puclic

    希望对你有帮助。

    【讨论】:

    • 一个小问题......我将如何实现 add 函数以便它添加两个有理函数? @YCF_L
    • 我也把 main 变成了一个不同的类
    猜你喜欢
    • 2018-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-24
    • 2015-05-03
    • 1970-01-01
    • 2012-08-24
    相关资源
    最近更新 更多