2011-12-09 4 views
1

의 단어 수를 가져올 수 없습니다 문자열에 저장하고 그 안에있는 단어의 수를 세지 만 항상 1을 반환합니다.내가 성공적으로 같은 문장에서 단어의 수를 셀 수있는 변수

은 내가 stringVariable = scanner.next();와 사용자 입력을 받고 단어 수를 얻을 수

int numWords = stringVariable.split(" ").length; 

을 사용하고 있습니다. "나는 테스트 중"이라고 입력했다고 가정 해 봅시다. 1을 반환합니다. 왜 이럴 수 있습니까?

답변

10

다음() :

이 스캐너로부터 다음의 완전한 토큰을 반환합니다. 완료 토큰 앞에 구분 기호 패턴과 일치하는 입력이옵니다. 이 메서드는 이전에 hasNext()가 true를 반환 한 경우에도 스캔 입력을 기다리는 동안 차단 될 수 있습니다.

기본 구분 기호는 공백이므로 첫 단어 만 읽습니다. 따라서, 오직 하나의 단어가 될 것입니다. hasNext() (종료 조건의 일부 유형)를 사용하여 루프에서 모든 사용자 입력을 읽거나 nextLine()을 사용하여 전체 행의 값을 읽으십시오.

4

나는 next()가 공백에서 멈춘다 고 믿기 때문에 "I"만 얻는다. scanner.nextLine()을 사용해보십시오.

5

scanner.next()이 공백을 토큰으로 사용하기 때문입니다. 다른 한편으로는,

scanner.nextLine() 당신이 찾고있는 것을 할 것입니다.

public static void main(String[] args) { 

    String input = "I am testing"; 
    Scanner s = new Scanner(input); 
    String stringVariable = s.next(); 
    System.out.println(stringVariable); 
    int numWords = stringVariable.split(" ").length; 
    System.out.println(numWords); 


    s = new Scanner(input); 
    stringVariable = s.nextLine(); 
    System.out.println(stringVariable); 
    numWords = stringVariable.split(" ").length; 
    System.out.println(numWords); 


} 

출력 :

내가
1
내가
3

1
I'm getting user input with a stringVariable = scanner.next(); 

을 테스트입니다 도달 할 때) (다음 정지하기 때문에이 항상 하나를 반환합니다 공백에. 이 중 하나를 사용하면 도움이 될 것입니다. 루프 내부

scanner.nextLine() 
or 
scanner.hasNext(); 

모든 토큰을 읽어

관련 문제