Я сделал новую реализацию Split с нуля, которая, по крайней мере, на мой взгляд (субъективная) "проще" понять.Вы можете или не можете найти это полезным.
public static String[] split(String input, char separator) {
// Count separator (spaces) to determine array size.
int arrSize = (int)input.chars().filter(c -> c == separator).count() + 1;
String[] sArr = new String[arrSize];
int i = 0;
StringBuilder sb = new StringBuilder();
for (char c : input.toCharArray()) { // Checks each char in string.
if (c == separator) { // If c is sep, increase index.
sArr[i] = sb.toString();
sb.setLength(0); // Clears the buffer for the next word.
i++;
}
else { // Else append char to current word.
sb.append(c);
}
}
sArr[i] = sb.toString(); // Add the last word (not covered in the loop).
return sArr;
}
Я предполагал, что вы хотите использовать примитивные массивы для обучения, иначе я бы вернул ArrayList для дальнейшего упрощения.Если StringBuilder слишком сложен для ваших студентов, вы можете заменить его на обычную конкатенацию строк (менее эффективная и плохая практика).