Подпрограмма всегда возвращает значение -1, как мне изменить порядок, чтобы оно заработало?

#java #subroutine

#java #подпрограмма

Вопрос:

/ * Находит первую гласную в слове и возвращает ее местоположение * */


 public static int findFirstVowel (String word) {
    int consonant = 0;
    for(int count = 0; count < word.length(); count  ){
        word.toUpperCase();
   char letter1 = word.charAt(count);
   String letter2 = (Character.toString(letter1));
   if (isVowel(letter2) == true){
    //consonant = 0;
    return (count);
     }
    }
    return (-1);
}**
  

Комментарии:

1. if (isVowel(letter2) == true){ -> if (isVowel(letter2)){ . Нет необходимости сравнивать логические значения, подобные этому.

Ответ №1:

Ваша проблема в word.toUpperCase(). Поскольку строки в Java неизменяемы, это создает новую строку в верхнем регистре, которую вы не используете. Правильный способ сделать то, что вы пытаетесь сделать, это:

 public static int findFirstVowel (String word) {
    int consonant = 0;
    word = word.toUpperCase(); // you need to set word back to the uppercase version

    for (int count = 0; count < word.length(); count  ) {
        char letter1 = word.charAt(count);
        String letter2 = (Character.toString(letter1));

        if (isVowel(letter2)) {
            return count;
        }
    }

    return -1;
}