循环体后找不到符号

时间:2017-05-11 01:25:07

标签: java loops compiler-errors

所以得到这个代码,我想打印出等式的最终总和,但是我得到了这个错误,说...

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

2 个答案:

答案 0 :(得分:4)

amount在循环内声明,因此无法在循环外访问。我会读到variable scope in Java。请参阅有关&#34;循环范围&#34;

的部分
  

在循环内创建的任何变量都是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);

答案 1 :(得分:0)

此代码给出编译时错误 - “本地变量可能尚未初始化”。

您必须在使用之前初始化变量。

局部变量(方法中的变量)不会获得默认值,我们必须显式初始化它。

注意:只有实例变量(类中的变量)才能获得默认值。