Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

범위가 지정된 문자열을 개별 숫자로 확장하는 Java 프로그램

입력 문자열에 '1-4'처럼 범위가 지정되어 있을 때, 이를 실제 숫자 목록으로 펼쳐야 하는 경우가 있습니다. 이럴 때는 문자열을 쉼표(,) 단위로 분리한 뒤, 각 항목을 하이픈(-) 기준으로 나누어 시작 값부터 끝 값까지 차례대로 숫자를 생성하면 됩니다. 아래는 이 과정을 구현한 Java 코드입니다.

예제 코드

public class Demo {
    public static void expand_range(String word) {
        StringBuilder my_sb = new StringBuilder();
        String[] str_arr = word.split(", ");
        for (int i = 0; i < str_arr.length; i++) {
            String[] split_str = str_arr[i].split("-");
            if (split_str.length == 2) {
                int low = Integer.parseInt(split_str[0]);
                int high = Integer.parseInt(split_str[split_str.length - 1]);
                while (low <= high) {
                    my_sb.append(low + " ");
                    low++;
                }
            } else {
                my_sb.append(str_arr[i] + " ");
            }
        }
        System.out.println(my_sb.toString());
    }
    public static void main(String args[]) {
        String my_str = "1-4, 56-57, 99-101, 0-1";
        System.out.println("The expanded range of given numbers is ");
        expand_range(my_str);
    }
}

출력 결과

The expanded range of given numbers is
1 2 3 4 56 57 99 100 101 0 1

코드 설명

Demo 클래스 안에는 expand_range 메서드가 정의되어 있으며, 다음과 같은 순서로 동작합니다.

  1. 입력 문자열을 쉼표(", ")를 기준으로 분리하여 배열로 만듭니다.
  2. 각 항목을 다시 하이픈("-")으로 분리합니다.
  3. 분리된 요소가 두 개라면 범위로 판단하여 시작 숫자(low)와 끝 숫자(high)를 정수로 변환한 뒤, low가 high에 도달할 때까지 1씩 증가시키며 StringBuilder에 추가합니다.
  4. 범위 표기가 없는 단일 숫자는 별도의 처리 없이 그대로 추가됩니다.

main 메서드에서는 "1-4, 56-57, 99-101, 0-1"이라는 문자열을 정의한 후, 이를 인자로 expand_range 메서드를 호출합니다. 그 결과 각 범위가 개별 숫자로 확장되어 콘솔에 출력됩니다.

참고로 이 코드는 오름차순 범위(예: 1-4)를 가정하고 작성되었습니다. 내림차순 범위나 공백이 없는 입력 형식까지 지원하려면 split 구분자 처리와 예외 처리 로직을 추가로 보완하는 것이 좋습니다.