已定义Java编译器错误变量

时间:2015-03-31 14:30:52

标签: 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));
        }
    }
}

3 个答案:

答案 0 :(得分:3)

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

int i = 0;

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

在代码中定义变量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));
}