решаю задачу и результаты теста показывают что я где-то намудрил с массивами (насколько я понимаю), но я не вижу где мог бы допустить ошибку. Знатоки, подскажите!)
public class Kata {
public static int findShort(String s) {
String [] words = s.split(" ");
String shortestword = words[0];
int size = shortestword.length();
for(int i = 1; i < size; i++) {
if (words[i].length() < shortestword.length()) {
shortestword = words[i];
}
return shortestword.length();
}
return 0;
}
}
результаты теста показывают
expected:<3> but was:<4>
Табулируйте! Яснее будет ошибка. Проблема становится очевидной:
public class Kata {
public static int findShort(String s) {
String [] words = s.split(" ");
String shortestword = words[0];
int size = shortestword.length();
for(int i = 1; i < size; i++) {
if (words[i].length() < shortestword.length()) {
shortestword = words[i];
}
return shortestword.length();
}
return 0;
}
}
Вы не проходите цикл до конца. При первой же итерации у вас выполняется возврат функции. Правильно:
public class Kata {
public static int findShort(String s) {
String [] words = s.split(" ");
String shortestword = words[0];
int size = shortestword.length();
for(int i = 1; i < size; i++) {
if (words[i].length() < shortestword.length()) {
shortestword = words[i];
}
}
return shortestword.length();
}
}
Однако, есть ещё ошибка: вы делаете цикл неправильное количество раз, а точнее, столько, сколько букв в первом слове (size). А стоит делать words.length() раз.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей