이 글에서는 문자열에 포함된 단어 중 길이가 짝수인 단어만 골라 출력하는 자바(Java) 프로그램 작성 방법을 알아봅니다.
먼저 기본 개념을 간단히 짚고 넘어가겠습니다. String은 하나 이상의 문자를 담으며 큰따옴표(" ")로 감싸는 데이터 타입입니다. 반면 char는 알파벳, 숫자 또는 특수 문자 하나를 저장하는 데이터 타입입니다.
문제 정의
입력 문자열이 다음과 같다고 가정해 보겠습니다.
Input string: Java Programming are cool
이때 원하는 출력 결과는 다음과 같습니다.
The words with even lengths are:
Java
cool
알고리즘
Step 1 - START
Step 2 - input_string이라는 이름의 문자열을 선언한다.
Step 3 - 값을 정의한다.
Step 4 - for 루프로 문자열을 순회하며 각 단어의 word.length() % 2 값을 계산해 길이가 2로 나누어떨어지는지 확인하고, 조건을 만족하는 단어를 저장한다.
Step 5 - 결과를 화면에 출력한다.
Step 6 - STOP
예제 1: main 함수에서 모든 로직 처리하기
첫 번째 방식은 모든 연산을 'main' 함수 안에 직접 작성하는 것입니다. 코드가 짧고 흐름을 한눈에 파악할 수 있다는 장점이 있습니다.
public class EvenLengths {
public static void main(String[] args) {
String input_string = "Java Programming are cool";
System.out.println("The string is defined as: " +input_string);
System.out.println("\nThe words with even lengths are: ");
for (String word : input_string.split(" "))
if (word.length() % 2 == 0)
System.out.println(word);
}
}출력 결과
The string is defined as: Java Programming are cool
The words with even lengths are:
Java
cool
예제 2: 객체 지향 방식으로 구현하기
두 번째 방식은 단어 출력 로직을 별도의 함수로 분리해 캡슐화하는 객체 지향 프로그래밍 스타일입니다. 로직이 독립된 함수로 분리되므로 재사용성과 유지보수성이 더욱 좋아집니다.
public class EvenLengths {
public static void printWords(String input_string) {
System.out.println("\nThe words with even lengths are: ");
for (String word : input_string.split(" "))
if (word.length() % 2 == 0)
System.out.println(word);
}
public static void main(String[] args) {
String input_string = "Java Programming are cool";
System.out.println("The string is defined as: " +input_string);
printWords(input_string);
}
}출력 결과
The string is defined as: Java Programming are cool
The words with even lengths are:
Java
cool
핵심 정리
이 프로그램의 핵심은 두 가지입니다. 첫째, split(" ") 메서드는 공백을 기준으로 문자열을 단어 배열로 분리합니다. 둘째, word.length() % 2 == 0 조건은 단어 길이를 2로 나눈 나머지가 0인지 검사하여 짝수 길이 여부를 판별합니다. 위 예제에서 'Programming'(11글자)과 'are'(3글자)는 홀수 길이로 제외되고, 'Java'(4글자)와 'cool'(4글자)만 출력된 것을 확인할 수 있습니다. 이 두 가지 원리만 익히면 어떤 문자열이든 손쉽게 짝수 길이의 단어를 필터링할 수 있습니다.