无法在Java中调用方法

时间:2015-01-30 21:09:31

标签: java methods

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

无论如何,当我调用该方法时,IDE会导致错误并认为我正在尝试使用相同的名称创建另一个方法并建议我更改名称。有人可以让我知道我做错了什么吗?换句话说,为什么我无法调用createVessel()方法? (注意:我会在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;

}

4 个答案:

答案 0 :(得分:1)

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

class {
    ... declarations of fields and methods

    void someMethod() {
        ... statements
    }
}

您将呼叫置于预期声明的位置。 IDE repairal然后决定你想做一个方法声明。

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

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

答案 1 :(得分:1)

直接解决方案:

String[] carry = createVessel();

我准备了一个例子,你可以看到这将编译并运行(如果你有一个main方法)只需点击这个链接:http://goo.gl/fQMpKJ它会让你这样: Online Example

<强>为什么吗 问题是你不能直接在一个类的主体中执行分配字段 - 如果它不在字段的直接声明中。为此,您可以使用构造函数来编写类似的内容:

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

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

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

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

如果您有其他问题,请随时发表评论 - 我稍后会再回答这个问题。另外我可以看到你并不熟悉Java,所以Oracle Tutorials可能会帮助http://docs.oracle.com/javase/tutorial/一点点。

答案 2 :(得分:0)

您需要将通话更改为:

String[] carry = createVessel();

Java Class范围不能像您那样进行任何分配,只有上面的方式

答案 3 :(得分:0)

您无法像在课堂内那样调用该方法。

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