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