본문 바로가기
카테고리 없음

문자열의 단어와 공백 수를 세는 Java 프로그램 쉽게 이해하기

by 코딩하는 욤욤이 2024. 11. 21.
반응형

Java 프로그램으로 문자열의 단어와 공백 수 세기

능숙하기 않은 분들고 쉽게 이해할 수 있도록, 프로그램의 구조와 동작 원리를 하나씩 살펴보겠습니다.


1. 문제 이해하기

우리는 문자열에서 단어의 개수공백(스페이스)의 개수를 세고 싶습니다.

  • 단어의 개수: 단어는 공백으로 구분됩니다. 예를 들어, "Hello World!"는 2개의 단어로 구성됩니다.
  • 공백의 개수: 문자열에서 나타나는 공백(' ')의 개수를 세면 됩니다. 예를 들어, "Hello World!"에는 공백이 1개 있습니다.

2. 프로그램의 설계

이 작업을 수행하기 위해 다음 단계를 따릅니다:

  1. 사용자로부터 문자열을 입력받습니다.
  2. 문자열을 하나씩 읽으면서 공백(' ')을 발견할 때마다 개수를 셉니다.
  3. 문자열을 단어별로 나누고, 단어의 개수를 셉니다.
  4. 결과를 출력합니다.

3. 코드 구현하기

아래는 이 프로그램을 작성한 코드입니다.

import java.util.Scanner;

public class WordAndSpaceCounter {
    public static void main(String[] args) {
        // 1. 사용자로부터 문자열 입력받기
        Scanner scanner = new Scanner(System.in); // Scanner 객체 생성
        System.out.println("문자열을 입력하세요:");
        String input = scanner.nextLine(); // 문자열 입력받기
        
        // 2. 공백 개수 세기
        int spaceCount = 0; // 공백 개수 초기화
        for (int i = 0; i < input.length(); i++) {
            if (input.charAt(i) == ' ') { // 문자가 공백인지 확인
                spaceCount++;
            }
        }
        
        // 3. 단어 개수 세기
        String[] words = input.trim().split("\\s+"); // 공백을 기준으로 문자열 나누기
        int wordCount = (input.trim().isEmpty()) ? 0 : words.length; // 공백만 입력된 경우 단어 개수 0 처리
        
        // 4. 결과 출력
        System.out.println("단어 개수: " + wordCount);
        System.out.println("공백 개수: " + spaceCount);
    }
}

4. 코드 설명

위 코드를 쉽게 이해할 수 있도록 주요 부분을 하나씩 설명하겠습니다.

  1. Scanner로 문자열 입력받기
Scanner scanner = new Scanner(System.in);
System.out.println("문자열을 입력하세요:");
String input = scanner.nextLine();

 

 

  • Scanner는 사용자가 입력한 값을 읽어오는 도구입니다.
  • scanner.nextLine()을 사용하여 한 줄의 문자열을 입력받습니다.

   2. 공백(' ') 개수 세기

int spaceCount = 0; // 공백 개수 초기화
for (int i = 0; i < input.length(); i++) {
    if (input.charAt(i) == ' ') { // 문자가 공백인지 확인
        spaceCount++;
    }
}

 

 

  • input.length()는 문자열의 길이를 반환합니다.
  • input.charAt(i)는 문자열의 i번째 문자를 반환합니다.
  • 이 문자가 공백(' ')인지 확인한 뒤, 공백이 발견되면 spaceCount를 증가시킵니다.

   3. 단어 개수 세기

String[] words = input.trim().split("\\s+");
int wordCount = (input.trim().isEmpty()) ? 0 : words.length;

 

 

  • input.trim()은 문자열의 양쪽 끝에 있는 공백을 제거합니다.
  • split("\\s+")는 연속된 공백을 기준으로 문자열을 단어로 나눕니다.
  • words.length는 단어 배열의 길이(즉, 단어의 개수)를 반환합니다.
  • 공백만 입력된 경우 단어 개수를 0으로 처리합니다.

   4. 결과 출력

System.out.println("단어 개수: " + wordCount);
System.out.println("공백 개수: " + spaceCount);

 

  • 단어 개수와 공백 개수를 출력합니다.

5. 프로그램 실행 예시

입력과 출력의 예를 통해 프로그램이 어떻게 동작하는지 확인해 보아요.

 

입력:

문자열을 입력하세요:
Hello World! This is Java.

출력:

단어 개수: 5
공백 개수: 4

입력:

문자열을 입력하세요:
   안녕하세요   Java 프로그래밍!

출력:

단어 개수: 3
공백 개수: 5

6. 이해를 돕기 위한 추가 팁

  • trim(): 입력 문자열의 앞뒤 공백을 제거합니다.
  • split("\\s+"): 하나 이상의 공백을 기준으로 문자열을 나눕니다.
  • 조건부 연산자 ?:: 특정 조건에서 값을 반환하는 간단한 방법입니다.

7. 프로그램 확장 가능성

이 프로그램은 단순한 형태로 설계되었지만, 더 발전시키려면 다음을 추가할 수 있습니다:

  1. 특수 문자 제거: 단어 개수를 세기 전에 특수 문자를 제거할 수 있습니다.
  2. 다양한 언어 지원: 한국어, 영어 등 다양한 언어에 맞춘 처리.
  3. 사용자 친화적인 메시지: 결과를 좀 더 자연스럽게 표현.

이렇게 프로그램을 완성하면 문자열 처리의 기초를 확실히 이해할 수 있습니다! 😊

반응형