【问题标题】:Printing an array's sum [duplicate]打印数组的总和[重复]
【发布时间】:2016-10-04 03:12:58
【问题描述】:

我正在尝试创建一个函数 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));
    }
}

【问题讨论】:

  • 如果您能真正告诉我们错误是什么,将会非常有帮助。向我们寻求调试帮助的问题显然是题外话。请提供一个 Minimal, Complete, and Verifiable example 来演示错误、预期和实际行为。
  • 您可能应该包括编译器错误所说的内容,这是编译器错误中最重要的部分。
  • 您需要将方法sum设为静态。 @AndrewL。这是一个糟糕的问题,但它也是一个 MCVE……它是完整的,重现了问题,而且是最小的。
  • @nhouser9 你说得对,但我想强调我要求展示错误的部分,比如告诉我们它实际上是什么。
  • OP,@qazwsx123,应该有一个 IDE(就像 eclipse,它是免费的)。它使查找编译时错误和运行时错误变得更加容易,并且通常使您的生活更加轻松。如果他(她)已经有一个,那么他们需要学习如何更好地使用它。

标签: java arrays sum println


【解决方案1】:

您正在从静态方法调用非静态方法。您可以像这样将 sum 更改为静态:

    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));
}

【讨论】:

    【解决方案2】:

    方法sum 必须是静态的才能在主方法中调用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-17
      • 1970-01-01
      • 2022-11-30
      • 1970-01-01
      • 2020-01-18
      • 1970-01-01
      • 2020-04-23
      相关资源
      最近更新 更多