2016-10-04 16 views
0

私は関数sumを作成しようとしていますが、それをmainと呼びますが、コンパイル時にエラーが発生しています。なぜこれが間違っているのかわかりません。配列の合計を出力する

class FindSum { 
    int sum(int[] arr) { 
     int sum = 0; // O(1) 
     for (int i = 0; i < arr.length; i++) { // n times 
      sum += arr[i]; // O(1) 
     } 
     return sum; // O(1) 
    } 

    // Driver program to test above functions 
    public static void main(String[] args) { 
     int arr[] = new int[]{5, 5, 10, 100, 10, 5}; 
     System.out.println(sum(arr)); 
    } 
} 
+0

は*本当に便利*だろう。デバッグの助けを求める質問は、トピックから明示的に外されています。エラー、予期された動作、および実際の動作を示す[最小、完全、および検証可能な例](http://stackoverflow.com/help/mcve)を提供してください。 – Li357

+0

おそらく、コンパイラエラーの中で最も重要なものであるSAYSというものを含めるべきでしょう。 – nhouser9

+0

'sum'メソッドを静的にする必要があります。 @AndrewL。これは悪い質問ですが、それはMCVEでもあります。完全で、問題を再現し、最小限です。 – nhouser9

答えて

1

メソッドsumは、メインメソッドで呼び出すために静的でなければなりません。

2

静的メソッドから非静的メソッドを呼び出しています。あなたは、どちらかの変更の合計は、このような静的なものにすることができます。

public static int sum(int[] arr) { 

またはメイン機能で新しいオブジェクトをインスタンス化:あなたは、実際にエラーが何であるかを教えてできれば

public int sum(int[] arr) { 
    int sum = 0; // O(1) 
    for (int i = 0; i < arr.length; i++) { // n times 
     sum += arr[i]; // O(1) 
    } 
    return sum; // O(1) 
} 

// Driver program to test above functions 
public static void main(String[] args) { 
    int arr[] = new int[]{5, 5, 10, 100, 10, 5}; 
    FindSum instance = new FindSum(); 
    System.out.println(instance.sum(arr)); 
}