2

ですから、私は数週間前にJavaを使い始めたばかりで、自分でメソッドを作成する方法を自分自身に教えようとしています。クラス「ClassTest」をコンパイルするときに2つの数値を加算するプログラムを作成しました。エラーは次のとおりです。

H:\Java Things\ClassTest.java:10: error: cannot find symbol
            GetNum(int1, int2);
        ^
  symbol:   method GetNum(int,int)
  location: class ClassTest
1 error

Process completed.

ClassTestのコードは次のとおりです。

import LotsOfMethods.*;

public class ClassTest
{
    public static void main (String[] args)
    {
        int int1 = 5, int2 = 7;
        GetNum(int1, int2);
    }
}

そして、ここにExampleMethodのコードがあります:

package LotsOfMethods;

public class ExampleMethod
{
    public static int GetNum(int num1, int num2)
    {
        int result;
        result = num1 + num2;
        return result;
    }
}
4

2 に答える 2

1

まず、Javaでメソッドを呼び出す方法を認識することが重要です。メソッドを実行するオブジェクトと、呼び出すメソッドの名前を指定する必要があります。

あなたが書くとき:

GetNum(int1, int2);

GetNumを実行するオブジェクトを指定していません。Javaには、このケースを処理するためのデフォルトの動作がいくつかあります。Javaは、コードを取り巻くオブジェクトコンテキストからメソッドを解決しようとします。したがって、Javaは「このClassTestオブジェクトに属するGetNum()メソッドが見つかりません」と言い、エラーが発生します。

H:\Java Things\ClassTest.java:10: error: cannot find symbol
            GetNum(int1, int2);

必要なメソッドは、クラスExampleMethodにあります。これは、ExampleMethodクラスにアタッチされた静的メソッドです。つまり、そこに到達するためにコピーをインスタンス化する必要はありません。代わりに、次のことができます。

int result = ExampleMethod.GetNum(int1, int2);

静的メソッドを持つクラスは、それらのメソッドの周りに一種の名前空間を提供するため、クラス自体がメソッドを解決するのに十分なデータを提供します。非静的メソッドを使用している場合は、次のようなことを行う必要があります。

ExampleMethod example = new ExampleMethod();
int result = example.GetNum(int1, int 2);

これがお役に立てば幸いです。

于 2012-10-31T15:24:06.393 に答える
0

GetNum()メソッドをClassTestクラスに移動するか、GetNum()呼び出しをに変更することができますExampleMethod.GetNum()。'ExampleMethod'という別のクラスがある理由がわかりません。一般に、通常、各メソッドの定義を含めるために新しいクラスを定義する必要はありません。

于 2012-10-31T15:22:58.890 に答える