Это не совсем верно - это:
String first = str.substring(0, i - 1);
должно быть:
String first = str.substring(0, i);
(Вспомните простой пример - если i
равен 1, вы хотите взять substring(0, 1)
, чтобы получить первый символ; substring(0, 0)
даст пустую строку.)
потому что второй параметр substring
уже исключительный .
Аналогично этой оптимизации:
else if (i == str.length()) {
return str.substring(0, i);
}
должно быть:
else if (i == str.length() - 1) {
return str.substring(0, i);
}
Вы также должны добавить проверку аргумента.
После внесения этих изменений этот код:
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
System.out.println(deleteCharAt("0123456789", i));
}
}
Дает этот вывод:
123456789
023456789
013456789
012456789
012356789
012346789
012345789
012345689
012345679
012345678