Подсчет строчных букв строки

#java #string #lowercase

#java #строка #нижний регистр

Вопрос:

Я просматривал форумы и нашел полезный код о том, как подсчитывать строчные буквы во введенной строке. Дело в том, что после тестирования я увидел, что он учитывает только строчные буквы в первом введенном слове. Итак, например, если я наберу: здесь, счетчик скажет, что я ввел 1 строчную букву (что правильно), но если я наберу: вот я, счетчик по-прежнему будет указывать только 1 вместо 4. Это только подсчет строчных букв в первом слове. Как мне заставить его считать строчные буквы во всей моей строке?

Пока что код:

  import java.util.Scanner;
 public class countingLowerCaseStrings {
 public static void main(String args[]){
 Scanner scanner = new Scanner(System.in);

 System.out.println("Enter your string: ");
 String input = scanner.next();

 int LowerCaseLetterCounter = 0;
   for (char ch : input.toCharArray()) {
     if (Character.isLowerCase(ch)) {
     LowerCaseLetterCounter  ;
  }
}

   System.out.println ("Number of lower case letters in this string is: "  
   LowerCaseLetterCounter);

   }

  }
  

Огромное спасибо за помощь!

Ответ №1:

scanner.next(); считывает первое доступное слово, а не всю строку.

Поэтому, если вы введете «Вот я», он будет просто читать «Здесь».

Измените его на scanner.nextLine() :

 System.out.println("Enter your string: ");
String input = scanner.nextLine();
  

ДЕМО — посмотрите на stdin и stdout панели.

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

1. Я полностью пропустил это! Спасибо, чувак, легко исправить, и я не могу поверить, что я этого не заметил! Ты потрясающий! 😉

Ответ №2:

Что интересно, Java 8 предоставляет довольно упрощенный способ достижения того же результата:

 scanner.nextLine().chars().filter(Character::isLowerCase).count()