我不是一个优秀的程序员,而且我只是在学习Java。我遇到了一个我以前没有经历过的问题。我之前使用构造函数来创建类的对象没有问题,但这里发生了奇怪的事情。我有一个旨在表示分数的Rational类,我为它创建了以下构造函数:
public Rational (int numerator, int denominator)
{
this.numerator = numerator;
this.denominator = denominator;
}
请注意,我还在类中初始化了int值numerator和denominator。我在课堂上也有一些代码来保持分母不为零,但是我在搜索中删除它以解决问题。唉,它没有做任何事。
当我尝试使用一个使用此构造函数的main方法在单独的类文件中测试该类时,我的问题出现了。例如,如果创建了两个新的理由如下:
Rational m = new Rational(2, 3);
Rational n = new Rational(5, 6);
然后我尝试使用我班上的toString方法打印这些。作为参考,这是方法:
public String toString() {
return numerator + "/" + denominator;
}
我会像这样打印:
System.out.println(m);
System.out.println(n);
然而,当我这样做时,我收到的输出总是指向Rational m,而不是指向Rational n。也就是说,我收到了输出:
5/6
5/6
(没有额外的空间线)。当我尝试使用类中的访问器方法打印每个分子或分母时,甚至会发生这种情况 - 它始终指的是最后创建的Rational对象。
有趣的是,当我在创建有理数m和n之间放置m的打印行时,它工作正常。但我希望能够在程序的后期引用这些理性,因此这不是一个真正的解决方案。
我做错了什么???为什么我的构造函数无法使用单独的实例变量创建对象???