作为我必须为我的课做的作业的一部分,我必须创建一个ADT文件,接受分数的分子和分母的用户输入,比较两者,并确定分数是否相等,然后在线束类中测试它。
我遇到的一个问题是我必须使用equals (Fraction f)
方法,使用以下公式比较两者:return getNum()*f.getDenom() == f.getNum()*getDenom();
。
到目前为止,这是我班级的代码:
public class Fraction {
int numerator;
int denominator;
//default constructor
public Fraction() {
numerator = 0;
denominator = 0;
}
public Fraction(int newNum, int newDenom) {
numerator = newNum;
denominator = newDenom;
}
//accessor
public void setNewNum(int newNum) {
numerator = newNum;
}
public void setNewDenom(int newDenom) {
numerator = newDenom;
}
public int getNum(int newNum) {
return newNum;
}
public int getDenom(int newDenom) {
return newDenom;
}
//Error here - "Methods getNum/getDenom in class Fraction cannot be applied to the given types:"
public boolean equals(Fraction f) {
return getNum()*f.getDenom() == f.getNum()*getDenom();
}
}
在NetBeans中阅读错误消息说"actual and formal argument lists differ in length."
我正在努力弄清楚我做错了什么,但我的印象是newNum
和newDenom
已经返回由于newNum
和newDenom
被设置为等于分子和分母,因此这些值是整数。
提前谢谢。
答案 0 :(得分:2)
您收到该错误的原因是,您的getter
方法被定义为接受int
参数(例如getNum(int newNum)
),而equals
方法未通过调用getNum
时的参数。
理想情况下,getter
方法的目的是返回一个值,因此它不需要接受任何参数。将getNum
和getDenom
更改为以下将解决问题:
public int getNum() {
return numerator;
}
public int getDenom() {
return denominator;
}
Here's getter
和setter
命名惯例的文档和示例。
答案 1 :(得分:1)
getNum(),getDenom()
/ getters /应该以这种方式声明:
public int getNum() {//without any parameters
return numerator; // not newNum
}
public int getDenom() {//without any parameters
return denominator; //not newDenom
}