2010-12-12 87 views
2

我写这个方法采取一种int[]b然后创建的int[] Per阵列和在b通过取每个索引i填充它,并使用另一种方法来返回一个int值是作为新的数组的索引每带值的b[i],但小而愚蠢的问题是它说找不到符号iPer [index-1]= b[i]; 任何想法缺少可变

public static int [] intial(int [] b) 
     { 
      int [] Per =new int [64]; 
      int index; 
      for(int i=0;i<b.length;i++) 

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


      return Per; 
     } 
+3

约定是以小写字母开始变量。只要提到它:) – 2010-12-12 10:52:31

+0

养成告诉你的IDE经常自动格式化文本的习惯。 – CodesInChaos 2010-12-13 12:04:29

回答

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; 
} 
+0

对不起第二个b是错字 – Gain 2010-12-12 10:43:46

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

我不完全理解你想达到什么样的,但是你所得到的错误是因为你再 - 声明一个名为b的变量。如果你看,你可以看到你给方法b命名了参数,并且声明了一个名为b的int变量。为了让它编译,你需要重命名方法参数或局部变量。

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

+0

对不起第二个b是错字 – Gain 2010-12-12 10:43:34

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; 
    } 
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; 
     } 
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; 
    } 
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是一个循环变量,它不会是可见的。包括大括号改变了这一切,并使两个语句成为循环体的一部分。