我是Java新手,我正在尝试创建一个ADT。我的ADT包括通过分子和分母的输入来创建和处理分数。我想要我的方法之一,把两个分数相加在一起,然后根据两个和的gcd返回一个简化的分数。我遇到的问题是如何实例化这两个分数(分子和分母)的成分。该方法应该使用其他的分数,表示为public Rational add(Rational other)
。我分配的第一个变量是
int d1 = this.denominator;
int d2 = other.denominator;
但这似乎行不通。以下是迄今为止的方法:
public Rational add(Rational other){
int d1 = this.denominator;
int d2 = other.denominator;
int dtotal = d1*d2;
int n1 = this.numerator*d2;
int n2 = other.numerator*d1;
int ntotal = n1+n2;
if(ntotal>dtotal){
for(int i=1; i<=ntotal; i++){
if(ntotal%i==0 && dtotal%i==0){
gcd=i;
}
}
}else if(dtotal>ntotal){
for(int i=1;i<=dtotal;i++){
if(dtotal%i==0 && ntotal%i==0){
gcd=i;
}
}
}else if(dtotal==ntotal){
gcd=numerator;
}
numerator = ntotal/gcd;
denominator = dtotal/gcd;
}
发布于 2015-09-20 07:26:46
您需要用所需的方法在类之外定义接口。这是样品,请根据您的需要进行编辑。
interface Rational {
public int getNumerator();
public int getDenominator();
public Rational add(Rational other);
public Rational multiply(Rational other);
public int compareTo(Rational other);
}
现在,您的类应该定义如下:
public class RationalC implements Rational {
int gcd;
int numerator;
int denominator;
@Override
public int getNumerator() {
return numerator;
}
@Override
public int getDenominator() {
return denominator;
}
@Override
public Rational add(Rational other) {
return null;
}
@Override
public Rational multiply(Rational other) {
return null;
}
@Override
public int compareTo(Rational other) {
return 0;
}
}
添加add
,multiply
方法定义。使用getNumerator()
和getDenominator()
访问这些值,而不是直接访问它们。
https://stackoverflow.com/questions/32676575
复制相似问题