Java编译器错误变量已经定义

我是编程新手,很难搞清楚这个错误:

C:....>javac Power.java Power.java:12: error: variable i is already defined in method main(String[]) `for(int **i** = 0; i < upper_limit + 1; i++)` 

这是整个计划。 我确信答案非常简单,但对于我的生活,我无法理解。

 import java.util.Scanner; public class Power { public static void main( String args[] ) { Scanner input_scanner = new Scanner(System.in); System.out.print("Powers of 2 up to? "); int upper_limit = input_scanner.nextInt(); int i = 0; for (int i = 0; i < upper_limit + 1; i++) { System.out.println(i + " - " + Math.pow(2, i)); } } } 

i变量已经被定义为for循环的一部分。 只需删除以下行:

 int i = 0; 
 int i = 0; for(int i = 0; i < upper_limit + 1 ; i++ ) { 

删除for循环中的int或删除for循环上方的行。 现在你定义int i两次

在代码中定义变量i两次。 它应该只按时定义。 我在下面两次强调了这一点。

 Scanner input_scanner = new Scanner( System.in ); System.out.print( "Powers of 2 up to? " ); int upper_limit = input_scanner.nextInt(); int i = 0; //First time i is defined for(int i = 0; i < upper_limit + 1 ; i++ ) //second time i is defined { System.out.println( i + " - " + Math.pow( 2, i)); } 

要解决此问题,请删除其中一个int i = 0行。 两个选项如下所示:

 int upper_limit = input_scanner.nextInt(); //First definition removed for(int i = 0; i < upper_limit + 1 ; i++ ) //second time i is defined { System.out.println( i + " - " + Math.pow( 2, i)); } 

第二解决方案

 int upper_limit = input_scanner.nextInt(); int i = 0; //First time i is defined for(; i < upper_limit + 1 ; i++ ) //second definition removed { System.out.println( i + " - " + Math.pow( 2, i)); }