반응형
Java 프로그램으로 문자열의 단어와 공백 수 세기
능숙하기 않은 분들고 쉽게 이해할 수 있도록, 프로그램의 구조와 동작 원리를 하나씩 살펴보겠습니다.
1. 문제 이해하기
우리는 문자열에서 단어의 개수와 공백(스페이스)의 개수를 세고 싶습니다.
- 단어의 개수: 단어는 공백으로 구분됩니다. 예를 들어, "Hello World!"는 2개의 단어로 구성됩니다.
- 공백의 개수: 문자열에서 나타나는 공백(' ')의 개수를 세면 됩니다. 예를 들어, "Hello World!"에는 공백이 1개 있습니다.
2. 프로그램의 설계
이 작업을 수행하기 위해 다음 단계를 따릅니다:
- 사용자로부터 문자열을 입력받습니다.
- 문자열을 하나씩 읽으면서 공백(' ')을 발견할 때마다 개수를 셉니다.
- 문자열을 단어별로 나누고, 단어의 개수를 셉니다.
- 결과를 출력합니다.
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. 코드 설명
위 코드를 쉽게 이해할 수 있도록 주요 부분을 하나씩 설명하겠습니다.
- 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. 프로그램 확장 가능성
이 프로그램은 단순한 형태로 설계되었지만, 더 발전시키려면 다음을 추가할 수 있습니다:
- 특수 문자 제거: 단어 개수를 세기 전에 특수 문자를 제거할 수 있습니다.
- 다양한 언어 지원: 한국어, 영어 등 다양한 언어에 맞춘 처리.
- 사용자 친화적인 메시지: 결과를 좀 더 자연스럽게 표현.
이렇게 프로그램을 완성하면 문자열 처리의 기초를 확실히 이해할 수 있습니다! 😊
반응형