Индекс массива вне границ, когда есть символ, повторяется сразу же после другого (Java) - PullRequest
0 голосов
/ 08 октября 2011

Строка ошибки - 13. Ошибка: индекс массива вышел за пределы.http://pastebin.com/L3FtzarH

Метод заключается в поиске символа в строке, и он работает нормально, за исключением случаев, когда рядом с тем же символом находятся повторяющиеся символы, например, в слове «Кролик» выдается ошибкас буквой "b", потому что это дважды и рядом с одной и той же буквой.

Я играю в палач.Я умножаю индекс на пустые места.Например: если секретное слово «кошка», то появится 3 знака подчеркивания: «_ _ _» эта строка подчеркивания имеет 6 символов, поэтому, если буква A (индекс 1 в мире «кошка»), я умножаю на 2заполнить нужное место в строке подчеркивания: "_ A _"

Редактировать 1, Ваш код:

   public void buscarLetra() {
      chequearif = false;
      string = "";
      letra = letraEscogida.toCharArray();
      System.out.println("la letra pasa a char:" + letra[0]);
      int index = 0;
      for (int i = 0; i < (palabraElegida.length()); i++) {
         if (palabraElegida.substring(i, i + 1).equals(letraEscogida) == true) {
            if (chequearif == true) {
               string = "";
               index = palabraElegida.indexOf(letraEscogida, index + 1);
               index *= 2;
               arrayGuiones[index] = letra[0];
               System.out.println("segundo index: " + index);
               index = 0;
            }
            index = palabraElegida.indexOf(letraEscogida);
            index *= 2;
            System.out.println("primer index: " + index);
            arrayGuiones[index] = letra[0];
            for (int j = 0; j < arrayGuiones.length; j++) {
               string += arrayGuiones[j] + "";
            }
            lbl_palabra.setText(string);
            chequearif = true;
         }
      }
   }

1 Ответ

1 голос
/ 09 октября 2011

Внутри вашего блока if (chequearif == true) { вы пытаетесь использовать index в вызове indexOf(). Вы пытаетесь проверить больше вхождений после первого вхождения, на которое, по вашему мнению, указывает index, но вы забыли, что ранее умножили индекс на 2. Поэтому он указывает куда-то за пределы второго вхождения, поэтому indexOf() возвращает -1. Вы удваиваете это до -2, а затем пытаетесь сказать arrayGuiones[index], что, очевидно, никогда не будет работать с отрицательным индексом.

...