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