Вы несколько ошибок:
Вы можете удалить еще {...} часть, потому что это не нужно.
У вас есть дополнительный ';' в инструкции for for.
Произошла ошибка в индексе цикла for. Вам нужно сделать 'i менее' str.length(), вместо i < = str.length(). В основном ваш цикл for попытается получить доступ к полноразмерному индексу вашего массива символов, но на самом деле он превышает длину. Например, индекс для строки 'hello' равен 0,1,2,3,4. Но «hello» .length() на самом деле 5. Если вы попытаетесь получить доступ к пятому индексу вашей строки, вы увидите исключение «java.lang.StringIndexOutOfBoundsException».
Кроме того, вы хотите получить каждое N-мерное значение (i-1)% n. Опять же, это из-за проблемы с индексом. Попробуйте подключить параметры в своей логике и использовать свой карандаш для записи результата, и вы поймете, почему.
И, конечно, когда i == 0, вы не хотите (0-1)% n произойти. Поэтому пропустите i == 0, добавив «i! = 0».
Теперь, следующий рабочий код:
public static String everyNth(String str, int n) {
String result = "";
for (int i = 0; i < str.length(); i++) {
if ((i-1)%n == 0 && i!=0)
result = result + str.charAt(i);
}
return result;
}
Какой смысл этого 'else' заявление? – Gary
У вас есть точка с запятой в конце заголовка 'for' ', перед скобой. Избавиться от этого. –
Отвечали ли они на ваш вопрос? – Rika