【问题标题】:Why Is This Method Invalid?为什么这个方法无效?
【发布时间】:2014-01-12 00:29:22
【问题描述】:

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

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

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

我该怎么做才能解决它?

【问题讨论】:

  • 添加返回类型 - 如果您不打算返回任何内容,则为 void。
  • 提供 SSCCE。您向我们展示的内容不会生成该错误消息,并且如果没有完整的课程,我们无法弄清楚您应该在这里尝试做什么。
  • @Reimeus 构造函数是方法:)
  • @MariuszS 但special one

标签: java bluej


【解决方案1】:

在 Java 中,方法必须具有返回类型(int、Integer、Random)或 void,如果它不打算返回任何东西。在public之后添加void。

public void UserNumber() {
    ...
}

您可能想创建一个类构造函数,但它的名称必须与类名相同。例如:

public class UserNumber {
    private final Random randy;

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

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

请提供该类的完整代码。

【讨论】:

    【解决方案2】:

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

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

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

    如果您想将其设为构造函数,则构造函数的名称必须与类的名称相同。

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

    【讨论】:

    • 这是构造函数:)
    【解决方案3】:

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

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

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

    更多:

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          【解决方案6】:

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

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

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

          【讨论】:

            【解决方案7】:

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

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

              UserNumber myNum = new UserNumber();
            

            我怀疑你想这样称呼它:

              ... = UserNumber();
            

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


            有 3 条线索告诉我 OP 的代码打算成为构造函数:

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

            1 - 我不能确定,因为你没有向我们展示上面有语法错误的行。或者,如果您这样做了,那么真正的问题出在其他地方……在您没有向我们展示的代码中。

            【讨论】:

              猜你喜欢
              • 2013-02-03
              • 2016-07-27
              • 2012-02-06
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多