java - Java程序中重写toString方法的问题

标签 java

我正在编写一个程序,其中定义了 Function 类,并具有使用它们执行算术运算的方法。在输出中,在我的 FractionDemo 类中,我在尝试编写输出、获取 @12f9de 等内容时遇到了问题。所以我知道我需要重写 toString 函数,但我遇到了找不到符号错误。

这是我的代码:

功能:

public class Fraction
{
    int numerator;
    int denominator;

    public Fraction(int numerator, int denominator)
    {
        this.numerator = numerator;
        this.denominator = denominator;
    }

    public void setNumerator(int numerator)
    {
        this.numerator = numerator;
        return;
    }

    public void setDenominator(int denominator)
    {
        this.denominator = denominator;
        return;
    }

    public int getNumerator()
    {
        return numerator;
    }

    public int getDenominator()
    {
        return denominator;
    }

    public static Fraction add(Fraction fraction1, Fraction fraction2)
    {
        Fraction fraction3 = new Fraction(((fraction1.getNumerator() * fraction2.getDenominator()) + (fraction1.getDenominator() * fraction2.getNumerator())), (fraction1.getDenominator() * fraction2.getDenominator()));
        return fraction3;
    }

    public static Fraction subtract(Fraction fraction1, Fraction fraction2)
    {
        Fraction fraction3 = new Fraction(((fraction1.getNumerator() * fraction2.getDenominator()) - (fraction1.getDenominator() + fraction2.getNumerator())), (fraction1.getDenominator() * fraction2.getDenominator()));
        return fraction3;
    }

    public static Fraction multiply(Fraction fraction1, Fraction fraction2)
    {
        Fraction fraction3 = new Fraction((fraction1.getNumerator() * fraction2.getNumerator()), (fraction1.getDenominator() * fraction2.getDenominator()));
        return fraction3;
    }

    public static Fraction divide(Fraction fraction1, Fraction fraction2)
    {
        if (fraction2.getNumerator() != 0)
        {
            Fraction fraction3 = new Fraction((fraction1.getNumerator() * fraction2.getDenominator()), (fraction1.getDenominator() * fraction2.getNumerator()));
            return fraction3;
        }
        else throw new IllegalArgumentException("Division by Zero");
    }
}

分数演示:

public class FractionDemo
{      
    public static void main(String[] args)
    {
        Fraction fraction1 = new Fraction(4,7);
        Fraction fraction2 = new Fraction(5,6);

        Fraction fractionSum = Fraction.add(fraction1, fraction2);
        System.out.println(fractionSum);

        Fraction fractionDif = Fraction.subtract(fraction1, fraction2);
        System.out.println(fractionDif);

        Fraction fractionProd = Fraction.multiply(fraction1, fraction2);
        System.out.println(fractionProd);

        Fraction fractionDividend = Fraction.divide(fraction1, fraction2);
        System.out.println(fractionDividend);
    }

    public String toString()
    {
        return ("The result is:  " + numerator + "/" + denominator);
    }
}

无论如何,有什么方法可以使输出格式正确吗?它说在 FractionDemo 底部的 toString 部分找不到我的变量。无论我是否使用变量名、函数调用(如 [fractionSum.getNumerator])或其他任何内容。我会立即说我并不真正理解最重要的 toString 事情,我对 Java 还很陌生。

如果有什么需要补充的,请告诉我。

最佳答案

您的 toString 方法需要位于您的 Fraction 类中,而不是位于 FractionDemo 中。

关于java - Java程序中重写toString方法的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13149844/

相关文章:

java - 使用正则表达式/字符串方法 : Print Words containing Pattern

java - 哪个xml序列化库是性能导向的?

java - 为什么我需要在 ListIterator 中调用 previous() 两次才能进行 'reverse' 迭代?

java - JSVC 初始化脚本不退出

java - 如何访问 servlet 的 web.xml 文件的第二个参数?

java - 如何防止 SOAP wsdl 中的 namespace 包装器标记?

java - 嵌套异常是 java.lang.NoClassDefFoundError : org/springframework/aop/config/AopNamespaceUtils

java - 方法中的继承程序错误

java - 有没有办法改变多个项目? 【很难描述,里面有例子】

java - 从按钮打开新的 JFrame