无法调用 Java 中的方法

Unable to Call Method in Java

我创建了一个 class。在 class 中,我创建了一个名为 "createVessel()" 的方法,它应该 return 一个字符串数组。我想从同一个 class 调用该方法并将 returned 字符串数组存储在另一个字符串数组变量中(甚至不确定我是否可以这样做)。

无论如何,当我调用该方法时,IDE 导致错误并认为我正在尝试创建另一个同名方法并建议我更改名称。有人可以让我知道我做错了什么吗?换句话说,为什么我不能调用 createVessel() 方法? (注意:我将 post createVessel() 方法中的所有代码只是为了添加上下文,即使它可能没有必要回答我的问题)。

package submarineGame;
import java.util.*;
public class GameControl {
    //Create Vessel Method

    String[] carry = new String[2];
    carry = createVessel();

    String[] createVessel(){

        // code here that creates an String array of positions

        return positions;

}

您需要将调用更改为:

String[] carry = createVessel();

Java Class scope 不能像你一样有任何赋值,只有上面的方法

您不能像以前那样只在 class 中调用该方法。

您必须从方法内部(如构造函数)或 Main 函数执行此操作。

一个class的块结构是两级的:

class {
    ... declarations of fields and methods

    void someMethod() {
        ... statements
    }
}

您在需要声明的地方进行了调用。 IDE 修复然后决定要进行方法声明。

所以将调用放在一个方法中,例如在程序入口点:

    public static void main(String[] args) {
        ... call here, on an instance
    }

直接解:

String[] carry = createVessel();

我准备了一个例子,你可以看到它会编译 运行(如果你有一个 main 方法)只需按照这个 link: http://goo.gl/fQMpKJ 它会得到你对此:

为什么? 问题是您不能 直接在 class 的主体中对字段执行 赋值 - 如果它不在字段的直接声明中。为此,您拥有构造函数,您可以在其中编写如下内容:

public GameControl(){
    carry = createVessel();
}

那么您可以继续使用 String[] carry = new String[2];,因为将在 createVessel() 方法中创建的 String[] 会覆盖它。另一种方法是使用 main 方法:

public static void main(String[] args) {
    carry = createVessel();
}

但是当然你还需要将 static 分配给 String[] carry 和方法 createVessel();

如果您还有其他问题,请随时发表评论 - 我稍后会回到这个问题。另外,我可以看出您对 Java 并不是很熟悉,因此 Oracle 教程可能会对 http://docs.oracle.com/javase/tutorial/ 有一点帮助。