如果变量未定义,它们如何参与 for 循环体?

How are variables involved in a for loop's body if they are not defined?

抱歉,之前有一个错误。这确实有效,但我很困惑 result 的值在 for 循环中的位置。

import java.util.Scanner;

  public class PowerLoop
{
     public static void main(String [] args) 
 {

       exponent(1);
}

  public static int exponent(int result) // defining method for raising base to power

{

     int base; // defining user input variables
     int power;
 {
    Scanner reader = new Scanner(System.in); // scanner is called reader

   System.out.println("Please enter the base."); // first input is base
   base = reader.nextInt();

   System.out.println("Please enter the exponent."); 
   power = reader.nextInt();
{
    for (int i = 1; i <= power; i++)
 {
     result = base * result;
 }
     System.out.println("Result: " + base + " ^ " + power + " = " + result);

   return 0;

}

在您的 for 循环中,变量 result 是在 for 循环范围之外创建的。本质上,您只是在更改已经创建的结果变量。如果您试图在 for 循环内创建一个新变量,例如 "newResult = base * result",如果您试图在 for 循环外使用它,它将失败。这是一个优化代码的简单示例:

//Start getting the proper variables in your MAIN method. 
Scanner reader = new Scanner(System.in);//create scanner here. 
System.out.println("Enter a base number: ");
int base = reader.nextInt();
System.out.println("Enter an exponent: ");
int power = reader.nextInt();
out.println(exponent(base, power));

然后你可以像这样优化指数方法:

public static int exponent(int base, int power) {
    double r = Math.pow(base, power);
    int result = (int)r;
    return result;

}

现在,对于您的具体问题,让我们想象一下将示例中的 for 循环更改为以下内容,这是重点:

for(int i = 1; i <= power; i++)
{
   int newResult = base * result;
}
System.out.println("Result: " + base + " ^ " + power + " = " + newResult);

上面的代码会产生错误,因为您正试图访问创建它的范围之外的变量。但是,由于结果作为参数传递给示例中的方法,因此它被认为是由稍后在方法范围内创建的 for 循环访问。本质上,您已经定义的结果变量将简单地在您的 for 循环中引用一个新值。如果我们试图在 for 循环中创建一个新的结果变量,例如 newResult,您将无法在该 for 循环的范围之外引用它。