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

자바(Java)로 임의의 랜덤 문자열을 생성하는 프로그램 만들기

이 글에서는 자바(Java)를 활용해 임의의(랜덤) 문자열을 생성하는 방법을 알아봅니다. 문자열(String)은 하나 이상의 문자를 담고 있으며, 큰따옴표(“ ”)로 감싸 표현하는 데이터 타입입니다.

아래는 이번 예제의 입력값과 기대 출력 결과입니다.

입력값

The size of the string is defined as: 10

기대 출력 결과

Random string: ink1n1dodv

알고리즘

1단계 - 시작
2단계 - 정수형 변수 string_size, 문자열 alpha_numeric, 그리고 StringBuilder 객체 string_builder를 선언한다.
3단계 - 필요한 값들을 정의한다.
4단계 - for 루프를 사용해 10번 반복하면서 Math.random() 함수로 난수 인덱스를 생성하고, append() 함수로 해당 문자를 StringBuilder에 추가한다.
5단계 - 최종 결과를 출력한다.
6단계 - 종료

예제 1: main 메서드에서 전체 로직 구현

첫 번째 예제에서는 문자열 생성 과정 전체를 'main' 메서드 안에서 하나로 묶어 처리합니다.

public class RandomString {
    public static void main(String[] args) {
        int string_size = 10;
        System.out.println("The size of the string is defined as: " +string_size);
        String alpha_numeric = "0123456789" + "abcdefghijklmnopqrstuvxyz";
        StringBuilder string_builder = new StringBuilder(string_size);
        for (int i = 0; i < string_size; i++) {
            int index = (int)(alpha_numeric.length() * Math.random());
            string_builder.append(alpha_numeric.charAt(index));
        }
        String result = string_builder.toString();
        System.out.println("The random string generated is: " +result);
    }
}

출력 결과

The size of the string is defined as: 10
The random string generated is:
ink1n1dodv

예제 2: 객체지향 방식으로 메서드 분리

두 번째 예제에서는 문자열 생성 로직을 별도의 메서드로 캡슐화하여 객체지향 프로그래밍 스타일로 구현합니다. 이렇게 하면 코드의 재사용성이 높아지고 유지보수도 쉬워집니다.

public class RandomString {
    static String getAlphaNumericString(int string_size) {
        String alpha_numeric = "0123456789" + "abcdefghijklmnopqrstuvxyz";
        StringBuilder string_builder = new StringBuilder(string_size);
        for (int i = 0; i < string_size; i++) {
            int index = (int)(alpha_numeric.length() * Math.random());
            string_builder.append(alpha_numeric.charAt(index));
        }
        return string_builder.toString();
    }
    public static void main(String[] args) {
        int string_size = 10;
        System.out.println("The size of the string is defined as: " +string_size);
        System.out.println("The random string generated is: ");
        System.out.println(RandomString.getAlphaNumericString(string_size));
    }
}

출력 결과

The size of the string is defined as: 10
The random string generated is:
ink1n1dodv

동작 원리 정리

두 예제의 핵심 로직은 동일하며, 다음 세 단계로 요약할 수 있습니다.

  • 후보 문자 집합 준비: 숫자(0~9)와 알파벳 소문자(a~z)를 합쳐 총 36개의 후보 문자를 하나의 문자열로 만듭니다.
  • 난수 인덱스 계산: Math.random()은 0.0 이상 1.0 미만의 실수를 반환하므로, 여기에 문자 집합의 길이(36)를 곱한 뒤 정수로 형 변환하면 0부터 35 사이의 인덱스를 얻을 수 있습니다.
  • 문자 조립: charAt(index)로 선택한 문자를 append()로 StringBuilder에 붙인 뒤, 마지막에 toString()으로 최종 문자열을 완성합니다.

for 루프의 반복 횟수가 곧 문자열의 길이가 되므로, string_size 값만 변경하면 원하는 길이의 랜덤 문자열을 손쉽게 생성할 수 있습니다.