Разбить строку на слова

107
30 ноября 2019, 13:00

Мне нужно разбить строку на слова, а после проверить, сходятся ли 1-я и последняя буква слова.

Проблема в том, что слово выходит с цикла после 1 раза, ссылаясь на то что, оно выходит за длину. Помогите, не понимаю, как сделать, чтобы оно прошло.

Пишет, что проблема вот в этой строке:if(substr1.charAt(indexOfSpace) == substr1.charAt(nextIndexOfSpace-1))

  int indexOfSpace = 0;
  int nextIndexOfSpace = 0;
  StringBuffer sentence = new StringBuffer("thit mom wow sentenc");
  int length = sentence.length();
  int lastIndexOfSpace = sentence.lastIndexOf(" "); 
  nextIndexOfSpace = sentence.indexOf(" ",indexOfSpace);  
  String substr1 = sentence.substring(indexOfSpace,nextIndexOfSpace);
  do
  {
      //checking words algorithm
      if(substr1.charAt(indexOfSpace) == substr1.charAt(nextIndexOfSpace-1))
      {
          System.out.println("WORD IS CORRECT");
          System.out.println(substr1);
      }
      else
      System.out.println("NO");
      indexOfSpace = nextIndexOfSpace;
      nextIndexOfSpace = sentence.indexOf(" ",indexOfSpace);  
  }
  while(indexOfSpace != lastIndexOfSpace);
  if(indexOfSpace == lastIndexOfSpace)
  {
      //the last word check
      if(sentence.charAt(lastIndexOfSpace+1) == sentence.charAt(length-1))
      {
          System.out.println(sentence.charAt(lastIndexOfSpace+1));
          System.out.println(sentence.charAt(length-1));
          System.out.println("last word ");
      }
  }
Answer 1

Можно упростить код, если через split слова получить:

String text = "thit mom wow sentenc";
for (String word : text.split(" ")) {
    if (word.charAt(0) == word.charAt(word.length() - 1)) {
        System.out.println("WORD IS CORRECT: " + word);
    } else {
        System.out.println("WORD IS NOT CORRECT: " + word);
    }
}

Результат:

WORD IS CORRECT: thit
WORD IS CORRECT: mom
WORD IS CORRECT: wow
WORD IS NOT CORRECT: sentenc
Answer 2

Проблема в том что вы обращаетесь к подстроке substr1, а индексы ищите в sentence.

if(sentence.charAt(indexOfSpace) == sentence.charAt(nextIndexOfSpace-1))

Еще одна проблема в

nextIndexOfSpace = sentence.indexOf(" ",indexOfSpace);

должно быть

nextIndexOfSpace = sentence.indexOf(" ",indexOfSpace + 1);
READ ALSO
Рисование на объектах (Node - Sphere)

Рисование на объектах (Node - Sphere)

Можно ли, а если можно то каким образом я могу рисовать на загруженной картинкеНапример создали сферу, наложили на нее diffuseMap и необходимо...

125
Как добавить одну и ту же кнопку в разные “карты”. Java CardLayOut

Как добавить одну и ту же кнопку в разные “карты”. Java CardLayOut

Я хочу добавить одну и ту же кнопку в разные дочернии панелиЕсли я добавляю эту единственную кнопку всего в одну дочернюю панель, то все хорошо...

121
Как конвертировать LocalDate или LocalDateTime в Calendar?

Как конвертировать LocalDate или LocalDateTime в Calendar?

Есть ли простой способ получить из объектов класса LocalDate или LocalDateTime объект класса Calendar?

111
Где можно практиковать JavaEE [закрыт]

Где можно практиковать JavaEE [закрыт]

Начал изучать JavaEE, но не знаю, где можно попрактиковать навыкиМб вы знаете где можно посмотреть готовые проекты JavaEE или не готовые, что бы самому...

106