为什么这个方法无效?

时间:2014-01-12 00:29:22

标签: java bluej

它表示公共用户号码是无效的方法。它声明代码的一部分无效,需要返回类型。

  public UserNumber(){
    super();
    randy = new java.util.Random();

} //=======================

我该怎么做才能修复它?

7 个答案:

答案 0 :(得分:2)

在Java方法中,如果不打算返回任何内容,则必须具有返回类型(int,Integer,Random)或void。在public之后添加无效。

public void UserNumber() {
    ...
}

您可能想要创建类构造函数,但其​​名称必须与类名相同。例如:

public class UserNumber {
    private final Random randy;

    public UserNumber() {
        super();
        randy = new Random();
    }
}

(在这种情况下,可以省略调用super() - 无论如何都要执行)

请提供此课程的完整代码。

答案 1 :(得分:1)

Constructor名称应与您的班级名称相同!

public class UserNumber {
     public UserNumber() {
        super();
        randy = new java.util.Random();
    } 
}

要调用此special method使用:new UserNumber() - 这就是全部:)

更多:

答案 2 :(得分:1)

除非您的班级被称为UserNumber,否则您需要在方法声明中添加返回类型

public void UserNumber(){
    randy = new java.util.Random();
}

void作为返回类型,因为该方法不会返回任何内容。

如果你想让它成为构造函数,那么构造函数的名称必须与类相同。

class UserNumber extends ...{
    public UserNumber(){
        super();
        randy = new java.util.Random();
    }
    ...
}

答案 3 :(得分:0)

公开后添加无效。每个方法都需要一个返回类型,这会将其设置为不返回任何内容。

答案 4 :(得分:0)

您缺少返回类型。它必须是void,int或任何对象类型。

答案 5 :(得分:0)

super()的调用让我觉得这应该是一个构造函数。您的班级必须被称为UserNumber

在这种情况下,您不需要返回类型,因为构造函数总是返回该类的新实例。

如果它不是构造函数,请删除对super()的调用,因为您只能在构造函数中调用它。还要确保您扩展的类具有无参数构造函数。

答案 6 :(得分:0)

我认为 1 真正的问题是你对方法和构造函数之间的区别感到困惑,并且你试图使用一个构造函数,就好像它一样是一种方法。

您的UserNumber所谓的方法实际声明(正确!)作为构造函数 1 。使用方法是作为构造函数如下:

  UserNumber myNum = new UserNumber();

我怀疑你试图把它称为:

  ... = UserNumber();

......那将会失败,说UserNumber是一种无效的方法。使用new调用Java构造函数。


有三条线索告诉我OP的代码意图是构造函数:

  1. super()语法仅在构造函数中有效。
  2. 方法声明需要返回类型和方法名称。这在参数列表之前只有一个标识符。
  3. 您使用了应该成为类名的标识符(根据Java标识符规则)。

  4. 1 - 我无法确定,因为您没有向我们显示语法错误的行。或者,如果你这样做了,那么真正的问题就是其他地方...在你没有向我们展示过的代码中。