@Dmitry07

Почему идентичный по сути код не выполняется?

Доброго времени суток.

Имеется простая задача: взять строку и удалить из нее все подстроки из 3-х символов. Подстроки начинаются на 'y' и заканчиваются на 'k', и из 'yakabc', например, получится 'abc'.

Правильное решение выглядит так:

public String stringСut(String str) {
  String result = "";
  
  for (int i=0; i<str.length(); i++) {
    if (i+2<str.length() && str.charAt(i)=='y' && str.charAt(i+2)=='k') {
      i =  i + 2;
    } else {
      result = result + str.charAt(i);
    }
  }
  
  return result;
}

Мое решение очень похоже, просто идет от 'если не равно':

public String stringСut(String str) {
  String result = "";
  
  for (int i=0; i<str.length(); i++) {
    if (i+2<str.length() && str.charAt(i)!='y' && str.charAt(i+2)!='k') {
      result = result + str.charAt(i);
    } else {
      i = i + 2;
    }
  }
  
  return result;
}

Данный код компилируется, однако выдается лишь пустая строка. С чем это может быть связано?

Благодарю.
  • Вопрос задан
  • 198 просмотров
Решения вопроса 1
alsopub
@alsopub
Вы неверно "инвертировали" условия.
Должно получиться что-то типа:
(i+2<str.length() && (str.charAt(i)!='y' || str.charAt(i+2)!='k'))
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы