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 :(得分:2)
变量result
在simpleArraySum()
方法中不存在,因为它是在主要范围内定义的
您可以在方法中创建一个变量并将其返回并将其存储在主{/ 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];