0

当我使用函数 generatecode() 时,它引用了一个错误,我想看看我是否正确地进行了拆分。我是新手,仍然需要一些帮助。在这种情况下,我通过以下方式创建了一个新类:TestFile variable = new TestFile(); 我不知道这意味着什么。谢谢!

    public class TestFile {

String[] preps = {
    "about", "above", "across", "after", "against",
    "along", "among", "around", "at", "before",
    "behind", "below", "beneath", "beside", "between",
    "by", "concerning", "down", "during", "except",
    "for", "from", "in", "inside", "into",
    "like", "near", "of", "onto", "out",
    "over", "through", "to", "toward", "under",
    "up", "upon", "with", "within", "without"
};

String[] errorpreps = {
    "will", "would", "shall", "should", "can",
    "could", "may", "might", "must", 
};

String[] question = {
};

public static void main(String[] args) {

    generatecode("hi");

};

public generatecode(String code){

    String prep = "";

    for (int i=0; i<preps.length; i++){

        prep = prep + preps[i];

    }

    System.out.println(prep);

    return prep;

}

public String printcode(String code){


    return "";

}

    }
4

3 回答 3

1

您的方法具有错误的访问修饰符:

public generatecode(String code){

应该

public static String generatecode(String code){

只是要注意

您也没有该方法的返回类型,因此这确实不应该编译。

为什么会这样?

main(String[] args)好吧,当没有对象实例时,可以运行静态方法。所以你可以打电话:

ClassName.method();

当您尝试从静态方法调用实例方法时,这意味着您正在尝试使用需要对象实例存在的代码功能。回顾一下:

ClassName c = new ClassName();
c.instanceMethod(); // This is an instance method.

ClassName.staticMethod(); // This is a static method.
于 2013-04-09T21:40:47.790 回答
1

在您的static main方法中,您还没有TestFile类的任何实例。要引用任何非static,您需要一个类的实例。这正是该行TestFile variable = new TestFile();所做的——它创建了一个TestFile.

然后你可以在你的实例上调用你的方法:

variable.generatecode("hi");

正如@ChrisCooney 已经指出的那样,您没有该方法的返回类型。所有方法都需要返回类型。在这种情况下,您需要声明您的方法返回 a String,因为这是该方法返回的内容。

于 2013-04-09T21:41:52.700 回答
0

generate是一个实例方法,而您正试图从 调用它main,这是一个静态方法。要解决它,您可以这样做。-

(new TestFile()).generatecode("hi");

于 2013-04-09T21:43:14.820 回答