2016-10-23 4 views
1

포럼을 둘러 보았고 입력 된 문자열에서 소문자 수를 계산하는 방법에 대한 유용한 코드를 발견했습니다. 문제는 그것을 테스트 한 후 입력 된 첫 번째 단어 내의 소문자 만 계산한다는 것입니다. 예를 들어, 다음과 같이 입력하면 HeRE 카운터에 입력 한 내용이 올바른 소문자로 표시됩니다. 안녕하세요 저는입니다. 카운터는 여전히 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); 

    } 

    } 

감사합니다 도움을 무리!

답변

3

scanner.next();은 전체 줄이 아닌 인 첫 번째 사용 가능한 단어 을 읽습니다.

그래서 "Here i am"을 입력하면 "Here"라고 읽습니다. scanner.nextLine()

변경이 :

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

DEMO-stdinstdout 패널 봐.

관심의 문제로서
+0

내가 완전히 그 보내고 말았습니다! 고마워 친구, 쉬운 수정 및 나는 그것을 알지 못했다고 나는 믿을 수 없다! 너 멋지다! ;) – hoshicchi

+0

@hoshicchi 여러분을 환영합니다! ;) – BackSlash

0

는 자바 8은 같은 일을 달성하는 매우 효율적인 방법을 제공합니다 :

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