【发布时间】:2017-01-25 19:28:24
【问题描述】:
我正在尝试为具有多个构造函数的类编写一个 toString 方法:
public Fraction(int n1, int d1, int n2, int d2)
{
num1=n1;
den1=d1;
num2=n2;
den2=d2;
}
和
public Fraction(int nAns, int dAns)
{
nAnswer=nAns;
dAnswer=dAns;
}
但是,当我尝试编写 toString 时,我不断收到编译错误(可能是因为这两个方法都被称为 toString):
public String toString()
{
return "Fraction[numerator1="+num1+", numerator2="+num2+", denominator1="+den1+", denominator2="+den2+"]";
}
public String toString()
{
return "Fraction[nAnswer="+nAnswer+", dAnswer="+dAnswer+"]";
}
如果我将 toString 方法之一命名为 toString 并将另一个命名为 toString2,则程序会编译,但不会为我提供 toString2 所需的输出。
然后我尝试为此方法编写一个 if 语句,但我不确定如何编写 if 部分(我该怎么说“如果您的分数看起来像第一个构造函数,则返回第一个 toString;如果您的fraction 看起来像第二个构造函数,返回第二个 toString"?)。
我尝试了以下方法,但我知道 if 部分是错误的,因为我不断收到编译错误:
if Fraction==Fraction(int num1, int den1, int num1, int den2)
{
public String toString()
{
return "Fraction[numerator1="+num1+", numerator2="+num2+", denominator1="+den1+", denominator2="+den2+"]";
}
else if Fraction==Fraction(int nAnswer, int dAnswer)
{
public String toString()
{
return "Fraction[nAnswer="+nAnswer+", dAnswer="+dAnswer+"]";
}
}
但我知道重载的 toString 方法是可能的,因为 Java 库中的很多类都使用它(例如,Rectangle 类)。
有什么建议吗?提前致谢!
【问题讨论】:
-
您的代码中至少有 10 个编译器错误。
-
正如我在帖子中提到的,我知道我的代码存在编译器错误,即在 if 语句中。但是,由于我仍然是初学者程序员,我不确定如何修复这些错误。我需要帮助的主要部分是如何编写 if 语句,以便它说出我在上面引用中提到的内容。
-
至少给出编译器错误 - 并尝试理解。
-
对不起,如果我之前听起来很鲁莽。这根本不是我的本意。无论如何,我会继续使用我的代码并尝试找到解决方案。感谢您的帮助
标签: java constructor overloading tostring