0

このプログラムをビルドしようとすると、 「静的コンテキストから参照された非静的メソッド」のようなエラーが常に発生します。これは、「main」で「addto」関数を使用できるためだと思います。では、どうすればこの問題を解決できますか? 「addto」で計算を行う必要があるため、パブリック配列リストが必要です

どうも!

public class Calculation {  
    ArrayList<int[]> cal = new ArrayList<>();

    public static void main(String[] args) {
    System.out.println(addto(3,5));
    }

    String addto(int figone, int figtwo){
     ........do the calculations by using arraylist cal
    }
 }
4

2 に答える 2

4

計算の非静的メソッドを使用するには、メイン関数内で計算オブジェクトをインスタンス化する必要があります。

非静的メソッドは、オブジェクト (クラスのインスタンスと考えることができます) のメンバーとしてのみ「存在」します。これを機能させるには、次のように記述する必要があります。

System.out.println(new Calculation().addto(3, 5))
于 2012-11-19T03:44:45.547 に答える
1

本当に簡単ですか?

System.out.println(new Calculation().addto(3,5));

また

Calculation calculation = new Calculation();
System.out.println(calculation.addto(3,5));
// and use 'calculation' some more ...

(メソッド宣言にstatic修飾子を追加することもできますが、それを使用できるように static も作成する必要があります。悪い考えです。)addtocaladdto


わかった。したがって、コンパイルメソッドが実際に言っているのは、それがインスタンスメソッドとして宣言されているということです...しかし、どのインスタンスを使用するaddtoかを言わずにそれを呼び出そうとしています。実際、静的メソッドであるかのように呼び出そうとしています。

「修正」(上記参照) は、インスタンスを作成し、そのメソッドを呼び出すことです。

于 2012-11-19T03:45:24.627 に答える