编译错误:缺少方法的返回类型

时间:2014-03-05 21:59:15

标签: java

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简化有理数。此外,当我输入一个返回类型时,它只会出现更多的错误和警告,所以我很难过!感谢您查看和所有输入。

3 个答案:

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