пропущенная переменная - PullRequest
       3

пропущенная переменная

2 голосов
/ 12 декабря 2010

Я написал этот метод, чтобы взять int[]b, затем создать массив int[] Per и заполнить его, взяв каждый индекс i в b и используя другой метод для возврата значения int в качествеиндекс нового массива Per со значением b[i], но маленькая и глупая проблема в том, что он не может найти символ i в строке Per [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;
        }

Ответы [ 7 ]

1 голос
/ 16 марта 2013

Изменение

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 является переменной цикла, его не будет видно. Включение скобок изменяет все это и делает две инструкции частью тела цикла.

0 голосов
/ 13 декабря 2010
  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;
  }
0 голосов
/ 12 декабря 2010
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 голосов
/ 12 декабря 2010

РЕДАКТИРОВАТЬ : После редактирования вопроса я не уверен.

В этом много неправильного.

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 голосов
/ 12 декабря 2010

Я не совсем понимаю, чего вы пытаетесь достичь, однако ошибка, которую вы получаете, заключается в том, что вы повторно объявляете переменную с именем b. Если вы посмотрите, то увидите, что вы назвали параметр для вашего метода b, а также объявили переменную int с именем b. Для компиляции вам нужно либо переименовать параметр метода, либо локальную переменную.

Кроме того, если в строке Per [index-1]= b[i]; вы собираетесь ссылаться на локальную переменную, вам нужно будет изменить ее объявление на массив int.

0 голосов
/ 12 декабря 2010
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 голосов
/ 12 декабря 2010

Я не понимаю эту строку:

int index, b;

вы создаете вторую переменную с именем "b", скрывая переменную, заданную в качестве аргумента (int [] b).

И, пожалуйста, используйте строчные буквы в начале имен переменных. «Пер» сбивает с толку, я думал, что это было имя класса. Вместо этого используйте «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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...