缺少变量

时间:2010-12-12 10:30:57

标签: java arrays loops

我写了这个方法来取int[]b然后创建一个int[] Per数组并通过在i中取每个索引b来填充它并使用另一种方法返回一个int值作为新数组Per的索引,其值为b[i],但小而愚蠢的问题是它在行{{1}中找不到符号i }; 任何想法

Per [index-1]= b[i]

7 个答案:

答案 0 :(得分:1)

更改

for(int i=0;i<b.length;i++)

    index=itable(i);
    Per [index-1]= b[i];

for(int i=0;i<b.length;i++) {
    index=itable(i);
    Per [index-1]= b[i];
}

在循环中不包括大括号{ }使得编译器仅将第一行视为循环体,并且因为i是循环变量,所以它不可见。包括大括号会改变所有这一切,并使两个语句成为循环体的一部分。

答案 1 :(得分:0)

我不明白这一行:

int index, b;

你正在创建一个名为“b”的第二个变量,隐藏作为参数给出的变量(int [] b)。

请在变量名称的开头使用小写字母。 “Per”令人困惑,我认为这是一个班级名称。改为使用“per”。

以下是您正在做的更好的版本:

public static int [] intial(int [] b)
{   
    int [] per = new int [64];
    for(int i=0; i<b.length; ++)
        per [itable(i)-1]= b[i];

     return per;
}

答案 2 :(得分:0)

public static int [] intial(int [] b) {   
    int[] Per = new int[64];
    int index,b;
    for (int i=0; i<b.length; i++) {
        index=itable(i);
        Per[index-1] = b[i];
    }
    return Per;
}

答案 3 :(得分:0)

我并不完全理解你想要实现的目标,但是你得到的错误是因为你正在重新声明一个名为b的变量。如果你看,你可以看到你为方法b命名了参数,并声明了一个名为b的int变量。要使其编译,您需要重命名方法参数或本地变量。

此外,如果您想要引用局部变量的行Per [index-1]= b[i];,则需要将其声明更改为int数组。

答案 4 :(得分:0)

编辑:编辑问题后,我不确定。

这有很多不妥之处。

public static int [] intial(int [] b)
    {   
        int Per []=new int [64];
        int index, b;  // b is redefined

        for(int i=0;i<b.length;i++)
            index=itable(i);    // what is itable???
            Per [index-1]= b[i];  // what is index??


        return Per;
    }

答案 5 :(得分:0)

public static int [] intial(int [] b) 
        {    
            int [] Per =new int [64]; 
            int index; // varible b was atypo
            for(int i=0;i<b.length;i++){ //here was the error because i did not wrote {}

                index=itable(i); //method returns int value less than 64
                Per [index-1]= b[i]; }


            return Per; 
        }

答案 6 :(得分:0)

  public static int[] intial(int[] b) {
    int[] Per = new int[64];      
    for(int i = 0; i < b.length; i++)
      Per[itable(i)-1] = b[i];    
    return Per;
  }