Java 在循环体之后找不到符号

Java 在循环体之后找不到符号,java,loops,compiler-errors,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(S

所以得到了这个代码,我想打印出方程的最终和,但我得到了一个错误,它说

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);
 }
}
amount在循环内声明,因此不能在循环外访问。我会读到关于你的故事。请参阅关于循环范围的部分

在循环内创建的任何变量都是循环的局部变量。这意味着一旦退出循环,就无法再访问变量!这包括在循环签名中创建的任何变量

阅读更多:

您可以通过在循环之外声明数量来修复它

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

此代码给出编译时错误-局部变量可能尚未初始化

在使用变量之前,必须对其进行初始化

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


注意:类中只有实例variableVariables获得默认值。

在for循环开始之前声明double amount。amount是for循环的本地值是的,因为它超出了范围。不确定金额点是什么,因为您只是将值赋给p。在这种情况下,您只需执行p=p*1+r*t并直接打印出pGet术语即可。代码甚至还没有编译,更不用说执行了。