Вначале пыталась решить по простому и долгому, выводил все верно но валидатору не нравилось. Решила уже другим путем через split и trim, но хотела разобраться что же было не так?
public static String getPartOfString(String string) {
if (string == null || string.isEmpty()) throw new TooShortStringException();
int count=0;
char[] chars =string.toCharArray();
int firstSpace=0;
int endSpace=0;
for (int i = 0; i <chars.length ; i++) {
if (chars[i]==' ') count++;
if (count==1) firstSpace=i;
if (count==5) endSpace=i;
}
if (count<4) throw new TooShortStringException();
if (count==4) endSpace=chars.length;
String newString=string.substring(firstSpace,endSpace);
return newString;
}
Alla Golovanova
28 уровень
Не проходит по последнему пункту.
Решен
Комментарии (2)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Justinian Judge в Mega City One Master
27 мая 2019, 08:53
На вход:
meaningful-names-and-functions
Ожидаемый вывод:
Фактический вывод:
Слишком много подогнано в алгоритме, если то если то, а если иначе, как результат не учтено, если пробелов больше 4 и строка не закончилась.
if (count == 5) endSpace = i;
это условие будет постоянно переписывать значение endSpace пока не встретит шестой пробел.
п.с
конструкции IF/FOR почти всегда пишутся с фигурными скобками, даже если там один оператор.
Переменные названия неплохо, но можно и лучше, например startIndex, endIndex.
Это укажет что переменная содержит индекс, а также начало и конец, first не слишком хорошо подходит, там где first, там и second и third.
Count, newString ок.
Это кажется мелочью, но с таких мелочей складывается читабельность, а из читабельности складывается насколько когда мы пишем программу сами понимаем что там происходит, в хорошо структурируемой и с хорошим неймингом программе, найти баги отловить в разы и в разы проще и быстрее, поэтому над этим компонентом нужно работать всегда. Это экономит огромное количество времени на написание кода.
+1
Alla Golovanova
27 мая 2019, 11:03
if (count==5) {
endSpace=i;
break;// вот чего не хватило по-видимому
}
Спасибо большое за развернутый ответ и ссылку!
+1