0

関数 generatecode() を使用したときに static を使用できないというエラーを参照しています。分割が正しく行われたかどうかを確認したかったのです。私は新しく、まだ少し助けが必要です。この場合、次のようにして新しいクラスを作成する方法を見てきました: 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 がすでに指摘しているように、そのメソッドの戻り値の型はありません。すべてのメソッドには戻り値の型が必要です。この場合、メソッドが を返すことを宣言する必要がありますString。これは、メソッドが返すものだからです。

于 2013-04-09T21:41:52.700 に答える