Изучение Java как моего первого языка, и я нашел решение проблемы в codingbat, но я не понимаю, почему мое решение не работает и вам понравится ваша помощь.Переключение последних двух символов в строку
Учитывая строку любой длины, возвращает новую строку, где последние 2 символы, если они присутствуют, поменяны местами, так что «кодирование» дает «codign».
lastTwo ("кодирование") → "codign"
lastTwo ("кошка") → "Cta"
lastTwo ("AB") → "ба"
Это мой не работает код:
public String lastTwo(String str) {
int strLength = str.length();
String last = str.substring(strLength-1,strLength);
String bLast = str.substring(strLength-2,strLength-1);
if(strLength<2)
return str;
return str.substring(0, strLength-2)+last+bLast;
}
Это те ошибки, и я не могу понять, почему:
lastTwo ("а") →"Исключение: java.lang.StringIndexOutOfBoundsException: Строка индекса вне диапазона: -1 (номер строки: 5)"
lastTwo ("") →
«Исключение: java.lang.StringIndexOutOfBoundsException: Строка индекса из диапазон: -1 (номер строки: 4) «
Кажется, что проблема возникает при вводе менее 2 символов, но я не могу понять, почему. Для меня логика if выглядит нормально.
Этот код также потерпит неудачу. – Tom
Привет, Том, почему?. его скомпилированы и протестированы. s = «cat» возвращает «cta», s = «кодирование» возвращает «codign». – chenchuk
Вы должны проверить строку, которая уже сбой в коде OPs ... – Tom