/**
* Shortens input by only having one letter in the output.
*If user inputs blank answer, default is size Small.
*/
if (!burgerSize.isEmpty()) {
burgerSize = burgerSize.trim().toUpperCase();
burgerSize = burgerSize.substring(0, 1);
}
Когда я сделал это в моем проекте, в командной строке сказал:Обрезка строки перед тем подстроки
Исключение в потоке «главный» java.lang.StringIndexOutOfBoundsException ... Индекс строки из диапазона: 1
в java.lang.String.substring (String.java:1 ...)
на BurgerOrder.main (BurgerOrder.java:66)»
Если я переключаю строки вокруг, это не так ... но мой учитель сказал мне обрезать строку перед подстрокой.
if (!burgerSize.isEmpty()) {
burgerSize = burgerSize.substring(0, 1);
burgerSize = burgerSize.trim().toUpperCase();
}
Это то, что я изначально имел, и у него не было ошибок. Должен ли я просто держать это так, как он есть, и принимать те очки, которые я потерял?
ОБНОВЛЕНИЕ: Позвольте пояснить. Если пользователь вводит букву S, как это делает "ssss"
, он сокращает и использует значение «S». То же самое для M, как "mmmmm"
и так далее. Я знаю, что делаю с моим кодом. Мне просто интересно, было ли то, что предложил мой профессор, неправильно (он читал мой код, который я распечатывал).
Вы понимаете, что каждый делает? –
Ух, я добавил комментарии в начале. – user3315017
Его вопрос был на самом деле риторическим. Вы получаете эту ошибку по очень веской причине; строка будет пустой после того, как вы обрезаете ее. Если вы читаете javadoc для 'substring', он сообщает вам: IndexOutOfBoundsException - если beginIndex отрицательный или endIndex больше длины этого объекта String –