본문 바로가기
Language/Java

자바 숫자 대소문자 합쳐 Random으로 출력방법

by wakestand 2020. 10. 29.
반응형

자릿수를 입력하면 숫자, 대소문자 중

랜덤으로 자릿수에 맞춰 출력해주는 코드인데

이거 수작업으로 만들라면 손도 많이가고 귀찮다

 

하지만 남이 만든 코드를 하나 만들어 놓고

거기서 뽑아쓰면 굉장히 편하게 랜덤값을 구할 수 있다

 

먼저 아래 코드를 복사한 뒤

 

import java.security.SecureRandom;
import java.util.Locale;
import java.util.Objects;
import java.util.Random;

public class RandomString {

    public String nextString() {
        for (int idx = 0; idx < buf.length; ++idx)
            buf[idx] = symbols[random.nextInt(symbols.length)];
        return new String(buf);
    }

    public static final String upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    public static final String lower = upper.toLowerCase(Locale.ROOT);
    public static final String digits = "0123456789";
    public static final String alphanum = upper + lower + digits;
    private final Random random;
    private final char[] symbols;
    private final char[] buf;

    public RandomString(int length, Random random, String symbols) {
        if (length < 1) throw new IllegalArgumentException();
        if (symbols.length() < 2) throw new IllegalArgumentException();
        this.random = Objects.requireNonNull(random);
        this.symbols = symbols.toCharArray();
        this.buf = new char[length];
    }

    /**
     * Create an alphanumeric string generator.
     */
    public RandomString(int length, Random random) {
        this(length, random, alphanum);
    }

    /**
     * Create an alphanumeric strings from a secure generator.
     */
    public RandomString(int length) {
        this(length, new SecureRandom());
    }

    /**
     * Create session identifiers.
     */
    public RandomString() {
        this(21);
    }

}

 

RandomString이라는 클래스를 만들고 내용을 붙여넣는다

 

이후 RandomString rs = new RandomString(자리수);

와 같이 객체화를 시켜주면 되는데

이후 nextString()으로 랜덤 값을 뽑아낼 수 있다

 

이게 전부이므로

클래스를 옮기고 자리수를 넣고 객체화 후

.nextString()으로 뽑아내는 것만 기억해주면 되겠다

반응형

댓글