次のコードを実装しようとしていますが、非静的メソッドへの静的参照で問題が発生しています。
public class App {
public static void main (String args[]) {
int result = factorial(5);
System.out.println(result);
}
private int factorial(int value) {
if (value == 0)
return 1;
int sum = value * factorial(value-1);
return sum;
}
}
上記のコードを実行すると、次のエラーが表示されます。
Error: Cannot make a static reference to the non-static method factorial() from the type App
メイン メソッドから static キーワードを削除すると、NullPointerException エラー スタックが発生します。
java.lang.NullPointerException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at
edu.rice.cs.drjava.model.compiler.JavacCompiler.runCommand(JavacCompiler.java:272)
この問題を回避する方法がよくわかりません。助けていただければ幸いです。
編集: factorial メソッドを呼び出すときにパラメーターを含めるのを忘れていました。現在は修正されています。申し訳ありません。