Java编译器错误变量已定义

Java编译器错误变量已定义,java,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++)` C:…>javac Power.java Power.java:12:错误:变量i已在方法main中定义(字符串[]) `对于(int**i**=0

我是编程新手,很难找出这个错误:

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++)`
C:…>javac Power.java
Power.java:12:错误:变量i已在方法main中定义(字符串[])
`对于(int**i**=0;i<上限+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));
        }
    }
}
import java.util.Scanner;
公共阶级权力{
公共静态void main(字符串参数[]){
扫描器输入\扫描器=新扫描器(System.in);
System.out.print(“2的幂高达?”);
int upper_limit=input_scanner.nextInt();
int i=0;
对于(int i=0;i<上限+1;i++){
系统输出println(i+“-”+数学功率(2,i));
}
}
}

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

int i = 0;
inti=0;
对于(int i=0;i<上限+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 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));
}
int上限=input\u scanner.nextInt();
int i=0;//第一次定义i时
对于(;i<上限+1;i++)//删除第二个定义
{
系统输出println(i+“-”+数学功率(2,i));
}

虽然正确,但我想我觉得包含整个源代码三倍的空间比它的价值要大。@DaveNewton我试图包含上下文,以便提问者能够准确地找出代码中出现问题的地方,以及解决方案在上下文中的外观。也就是说,我当然可以让它更简洁。编辑一点让它更简短。你试过什么吗?错误会告诉你你的代码出了什么问题。该死的,我觉得自己很愚蠢。谢谢你的快速回复和帮助,非常感谢。
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));
}