문자열 - 단어의 개수


단어의 개수(1152)

문자열에 공백이 들어갈 경우 if 문으로 분기를 해주지 않으면

공백임에도 불구하고 1이라는 값을 반환한다.


// Solve 1
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String S = in.nextLine();
        
        // 값이 없는 경우 || 공백인 경우
        if (S.isEmpty() || S.equals(" ")) {
            System.out.println(0);
        } else {
            String[] list = S.trim().split(" ");
            System.out.println(list.length);
        }
    }
}

// Solve 2
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String S = in.nextLine();

        StringTokenizer st = new StringTokenizer(S, " ");
        System.out.println(st.countTokens());
    }
}


StringTokenizer

✓ 긴 문자열을 지정된 구분자를 기준으로 토큰(token)이라는 여러 개의 문자열로 나눈다.

✓ 구분자로 단 하나의 문자 밖에 사용하지 못한다.

✓ 구분자를 토큰으로 간주할지 여부는 생성자의 3번째 매개변수로 설정할 수 있다.

count() : 전체 토큰의 수를 반환한다.



Trim

문자열을 앞 또는 뒤에 공백이 있을 경우 trim()을 사용하면 제거할 수 있다.

String s = " trim 메서드 테스트 ";
System.out.println(s.trim());

// → "trim 메서드 테스트"