2017-08-31 95 views
2
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中声明的变量。我究竟做错了什么?

+0

'int result'的范围仅限于'main'方法。即使这两个是“静态”,变量也在方法内。您可以在类中声明'static int result'。 – AxelH

+0

声明变量结果 – JavaLearner1

+0

@AxelH感谢您提供的解决方案也可以解决。欢呼声有美好的一天! – Dk1446

回答

2

变量resultsimpleArraySum()方法的存在,因为它是在主

范围定义您可以创建在会做的总和,并返回其方法的变量,它会被存储在result int主

此外,你需要把return sum; AFTER循环,如果你不这样做,它会做第一次迭代,然后返回结果,它的结束,你需要做的所有循环和后返回总和,如下所示:

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

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

你也可以使用一个for each loop,这意味着每个int类型数组AR,所谓intInLoop我们将做到这一点

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

而且sum = sum +ar[ar_i];是一样sum += ar[ar_i];

+0

感谢@azro帮助我。我一定会使用你提到的提示。欢呼声有美好的一天! – Dk1446

相关问题