#java #methods #indexing #out
#java #методы #индексирование #out
Вопрос:
Строка ошибки равна 13. Ошибка заключается в том, что индекс массива не ограничен. http://pastebin.com/L3FtzarH
Метод заключается в поиске символа в строке, и он работает нормально, за исключением случаев, когда рядом с одним и тем же символом есть повторяющиеся символы, например, в слове «Rabbit» выдает ошибку с буквой «b», потому что она дважды и рядом с одной и той же буквой.
Я играю в палача. Я умножаю индекс на на для пробелов. Например: если секретное слово «cat», то в нем появятся 3 символа подчеркивания: «_ _ _ » эта строка подчеркивания состоит из 6 символов, поэтому, если буква A (индекс 1 в мире «cat») Я умножаю на 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. Пожалуйста, разместите свой код здесь, на форуме, а не в ссылке.
2. Кстати: вы делаете это слишком сложным, включая пробелы между символами подчеркивания в свои вычисления. Просто вычислите на основе фактических символов, затем отформатируйте в соответствии с вашими потребностями (например, включите пробелы между всеми символами).
3. Какова точная ошибка? Какой индекс он пытается прочитать?
4. Я не вижу ничего такого сложного, включая пробелы, это просто умножает индекс на 2… но хорошо, что я сделал это, как вы говорите @home, и работает отлично, спасибо.
5. Но я хотел бы понять, почему, когда я включаю пробелы, они выдают ошибку. По моим расчетам, индекс никогда не превышал длину строки… и это ошибка времени выполнения, которая меня выдала.
Ответ №1:
Внутри вашего if (chequearif == true) {
блока вы пытаетесь использовать index
его в indexOf()
вызове. Вы пытаетесь проверить наличие дополнительных вхождений после первого вхождения, на которое, по вашему мнению index
, указывает, но вы забыли, что ранее вы умножили индекс на 2. Следовательно, он указывает куда-то за пределы второго вхождения, поэтому indexOf()
возвращает значение -1. Вы удваиваете это значение до -2, а затем пытаетесь сказать arrayGuiones[index]
, что, очевидно, никогда не будет работать с отрицательным индексом.
Комментарии:
1. Отлично, так что мне нужно сделать, это разделить индекс на 2, чтобы не изменять индекс.