Я пишу программу, которая меняет порядок слов в предложении. (например, «красная шляпа принадлежит Джону» => «Джон принадлежит шляпе красного цвета»). Я прошел через цикл do-while, но я не понимаю, почему существует Индекс Исключение.StringIndexOutOfBoundsException: проблемы с String.substring() и String.indexOf()
Спасибо за вашу помощь,
JonBrown
Исключение:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -23
at java.lang.String.substring(Unknown Source)
at WordReverse.main(WordReverse.java:17)
Код:
public class WordReverse
{
public static void main(String[] args)
{
String input = "The red had belongs to John";
String reverse = "";
int lastSpace = 0;
do
{
//Isolate Word w/ Preceding Space
int startIndex = lastSpace;
int endIndex = input.indexOf(' ', startIndex + 1);
//Add Word to front of String
reverse = input.substring(startIndex, endIndex) + reverse;
//Add Preceding Space for First Iteration
if (lastSpace == 0) reverse = " " + reverse;
//Reset Last Space
lastSpace = endIndex;
// Repeat Loop Until line14 .indexOf returns -1 due to lack of " ".
}while (lastSpace != -1);
System.out.println(reverse);
}
}
вопрос с input.indexOf (»», STARTINDEX + 1); возвращает -1 для последнего слова входной строки. – ravthiru