main 中声明的变量可以从静态函数访问吗?

can variable declared in main be accessed from static function?

import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;

public class Solution {

    static int simpleArraySum(int n, int[] ar) {
        // Complete this function
        for(int ar_i = 0; ar_i < n; ar_i++){
            result = result +ar[ar_i];
            return result;  
        }

    }

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int[] ar = new int[n];
        for(int ar_i = 0; ar_i < n; ar_i++){
            ar[ar_i] = in.nextInt();
        }
         int result = simpleArraySum(n, ar);
         System.out.println(result);

    }
}

error log

Solution.java:13: error: cannot find symbol
            result = result +ar[ar_i];
            ^
  symbol:   variable result
  location: class Solution
Solution.java:13: error: cannot find symbol
            result = result +ar[ar_i];
                     ^
  symbol:   variable result
  location: class Solution
Solution.java:14: error: cannot find symbol
            return result;
                   ^
  symbol:   variable result
  location: class Solution
3 errors

这个程序假设打印数组中元素的总和。我不知道如何从静态函数访问 main 中声明的变量。我做错了什么?

变量resultsimpleArraySum()方法中不存在,因为它是在main

的范围内定义的

您可以在方法中创建一个变量,该变量将进行求和并 return 它,它将存储在 result int main

你还需要把 return sum; 放在循环之后,如果你不这样做,它会进行第一次迭代,然后 return 结果就结束了,你需要做所有循环和 return 之后的总和,如下所示:

static int simpleArraySum(int n, int[] ar) {
    int sum = 0;
    for(int ar_i = 0; ar_i < n; ar_i++){
        sum = sum +ar[ar_i];      
    }
    return sum;
}

提示(您不需要使用它们,它们只是信息性):

你也可以使用for each loop,这意味着数组ar中的每个int,称为intInLoop我们将这样做

for (int intInLoop : ar){
      sum = sum + i;
}

并且sum = sum +ar[ar_i];sum += ar[ar_i];相同