方法无法应用于Java

时间:2017-06-10 18:53:19

标签: java class abstract-data-type

作为我必须为我的课做的作业的一部分,我必须创建一个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."我正在努力弄清楚我做错了什么,但我的印象是newNumnewDenom已经返回由于newNumnewDenom被设置为等于分子和分母,因此这些值是整数。

提前谢谢。

2 个答案:

答案 0 :(得分:2)

您收到该错误的原因是,您的getter方法被定义为接受int参数(例如getNum(int newNum)),而equals方法未通过调用getNum时的参数。

理想情况下,getter方法的目的是返回一个值,因此它不需要接受任何参数。将getNumgetDenom更改为以下将解决问题:

public int getNum() {
    return numerator;
}

public int getDenom() {
    return denominator;
}

Here's gettersetter命名惯例的文档和示例。

答案 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
}