public class StoreRatioNumberClass
{
private int num;
private int den;
public RationalNumber() //here
{
num = 0;
den = 1;
}
public RationalNumber(int newNum, int newDen) //and here, but it gives me 3 separate errors for it//
{
num = newNum;
den = newDen;
simplify();
}
private void simplify()
{
int gcd = gcd();
finalNum = num/gcd;
finalDen = den/gcd;
}
private static int gcd(int a, int b)
{
if (b == 0)
return a;
else
return gcd(b, a % b);
}
public double getValue()
{
return (double)num/den;
}
public String toString()
{
return(num + "/" + den);
}
}
我的问题是如何在第7行和第7行解决这个编译问题? 11?此类使用此处未显示的main方法类中输入的分子和分母,并使用GCD简化有理数。此外,当我输入一个返回类型时,它只会出现更多的错误和警告,所以我很难过!感谢您查看和所有输入。
答案 0 :(得分:3)
您需要在构造函数中使用类的名称:
public StoreRatioNumberClass(int newNum, int newDen) {
//...
否则编译器会认为你即将声明一个方法,并且显然对丢失的返回类型感到困惑
答案 1 :(得分:1)
您的RationalNumber
方法未声明返回类型。您正在使用的表单仅允许构造函数。如果将两个方法的名称更改为StoreRatioNumberClass
(即,使方法名称与类名称匹配以使其成为有效的构造函数),则编译器错误应该消失。
答案 2 :(得分:1)
您将您的类命名为 StoreRatioNumberClass ,如以下类声明
public class StoreRatioNumberClass
我相信你试图在编译器抱怨的行中为这个类定义构造函数。构造函数必须与类具有相同的名称,否则,它们将被解释为方法名称(例如您的simplify
)。但是,这些错误的方法定义会错过它们的返回类型。
更改
public RationalNumber() //here
到
public StoreRatioNumberClass() //here