2017-05-11 33 views
-1

所以得到這個代碼,我想打印出來的方程式的最後一筆,但我得到這個錯誤是說......找不到循環體之後符號

Test.java:14: error: cannot find symbol 
    System.out.println(amount); 
        ^
symbol: variable amount 
location: class Test 

這是因爲它超出了範圍?不太確定這裏有什麼問題。

public class Test{ 
public static void main(String[]args){ 
    double p = 1000; 
    double r = 0.1; 
    double t = 5; 
    double amount; 

    for(int a = 0; a < t; a++){ 
     amount = p * (1 + r*t); 
     p = amount; 
    } 
    System.out.println(amount); 
} 
} 
+1

在'for'循環開始處聲明'double amount' _before_。 –

+0

'amount'對於'for'循環來說是本地的 –

+0

是的,這是因爲它超出了範圍。不知道'amount'的含義是什麼,因爲您只是將值賦給'p'。在這種情況下,您可以執行'p = p *(1 + r * t)'並打印出'p' – tabiul

回答

4

amount在循環內聲明,所以無法在循環外部訪問。我會讀約variable scope in Java。參見關於「迴路範圍」的部分

在循環內創建的任何變量都是LOCAL TO LOOP。這意味着一旦你退出循環,變量就不能再被訪問了!這包括在循環簽名中創建的所有變量。

瞭解更多:http://www.java-made-easy.com/variable-scope.html#ixzz4gjHz61kY

你會通過聲明amount外循環修復它。

double amount = 0d; 
for(int a = 0; a < t; a++){ 
    amount = p * (1 + r*t); 
    p = amount; 
} 
System.out.println(amount); 
0

此代碼給出編譯時錯誤 - 「本地變量可能未被初始化」。

你必須在使用它之前初始化變量。

局部變量(方法中的變量)不會獲得默認值,我們必須顯式初始化它。

注意:只有實例變量(類中的變量)獲取默認值。