2010-12-12 6 views
2

ich diese Methode ein int[]b dann eine Reihe von int[] Per und füllen Sie ihn, indem sie jeden Index i in b und verwendet eine andere Methode erstellt nehmen schrieb als Index des neuen Arrays zu sein, einen int Wert zurückgeben Pro mit Wert von b[i], aber das kleine und dumme Problem ist es sagt, kann nicht Symbol i in Zeile Per [index-1]= b[i] finden; eine Ideefehlende Variable

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

Die Konvention besteht darin, Variablen mit einem Kleinbuchstaben zu beginnen. Nur um es zu erwähnen :) –

+0

Gewöhnen Sie sich an Ihre IDE, den Text oft automatisch zu formatieren. – CodesInChaos

Antwort

0

Ich verstehe nicht, diese Zeile:

int index, b; 

Sie eine zweite Variable Schaffung von "b" genannt, die Variable als Argument angegeben versteckt (int [] b).

Und bitte verwenden Sie Kleinbuchstaben am Anfang Ihrer Variablennamen. "Per" ist verwirrend, ich dachte, es wäre ein Klassenname. Verwenden Sie stattdessen "per".

Hier ist eine bessere Version von dem, was Sie tun:

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

Sorry zweiten b war ein Tippfehler – Gain

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

ich nicht ganz verstehen, was Sie versuchen zu erreichen, aber die Fehler, den Sie bekommen, weil Sie neu sind - Deklarieren einer Variablen mit dem Namen b. Wenn Sie nachsehen, können Sie sehen, dass Sie den Parameter für Ihre Methode b benannt haben und eine int-Variable namens b deklarieren. Um dies zum Kompilieren zu bringen, müssen Sie entweder den Methodenparameter oder die lokale Variable umbenennen.

Wenn Sie außerdem in der Zeile Per [index-1]= b[i]; auf die lokale Variable verweisen möchten, müssen Sie ihre Deklaration in ein Array von int ändern.

+0

Sorry zweiten b war ein Tippfehler – Gain

0

EDIT: Nachdem die Frage bearbeitet wird, bin ich mir nicht sicher.

Hier sind viele Dinge falsch.

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

ändern

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

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

zu

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

Ohne die Zahnspange { } in der Schleife, um die Compiler betrachten die erste Linie nur als der Körper des Schleife und seit i ist eine Schleifenvariable, die nicht sichtbar ist. Das Einschließen der geschweiften Klammern ändert all dies und macht die beiden Anweisungsteile des Schleifenkörpers.