如果变量未定义,它们如何参与 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 循环的范围之外引用它。
抱歉,之前有一个错误。这确实有效,但我很困惑 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 循环的范围之外引用它。