Я написал статический метод, который предназначен для взятия строки и скремблирования.Java: Почему я продолжаю получать исключение StringIndexOutOfBoundsException для этого метода?
При вводе заданной строки, такие как «четыре балла и семь», вы должны получить на выходе
«F rneosedvuc eroasn», потому что строка шифруется в сетке ниже.
row 1: f r n e
row 2: o s e d v
row 3: u c e
row 4: r o a s n
Когда я запускаю этот метод, я продолжаю получать StringIndexOutOfBoundsException
на линии, которые используют s.charAt(i)
. Я не знаю, почему это так. Независимо от того, насколько я изменяю тест на цикл, который явно кажется проблемой, я все равно получаю эту ошибку.
Код:
public class Test {
public static void main(String[] args){
System.out.println(encode("four score and seven", 4));
}
public static String encode(String s, int n){
String finalOutput = "";
for (int i = 0; i < n; i++){
String output = "";
for(int j = 0; j < s.length() - 1; i += n){
System.out.println(s.charAt(i) + " " + i);
output += s.charAt(i);
}
finalOutput += output;
}
return finalOutput;
}
}
для (Int J = 0, J
Я пытаюсь добавить символ, который находится в индексе i, тогда i + n, то i + n. Буквы n находятся друг от друга в индексе. – user3450277
Если длина равна 5, тогда я достиг бы 12, что явно выходит за пределы. Кроме того, поскольку вы никогда не увеличиваете j, ваш цикл работает вечно. – csmckelvey