2017-08-31 91 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

相關問題