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

时间:2017-08-31 07:46:45

标签: java variables static-methods

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

    }
}
  

错误日志

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中声明的变量。我做错了什么?

1 个答案:

答案 0 :(得分:2)

变量resultsimpleArraySum()方法中不存在,因为它是在主要范围内定义的

您可以在方法中创建一个变量并将其返回并将其存储在主{/ 1>}中的变量

你还需要把result放在循环之后,如果不这样做,它会进行第一次迭代,然后返回结果,结束时,你需要做所有的循环,然后返回总和,像这样:

return sum;

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

你也可以使用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; } ,这意味着代表数组ar中的每个int,名为for each loop我们会这样做

intInLoop

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

相同