Java Character forDigit 메서드

JavaBeginner
지금 연습하기

소개

이 랩에서는 Character 클래스의 일부인 Java forDigit() 메서드에 대해 배우게 됩니다. 이 메서드는 지정된 기수 (radix) 에 따라 지정된 숫자에 대한 지정된 문자 표현을 반환합니다.

Java 파일 생성

다음 명령을 사용하여 ~/project 디렉토리에 CharForDigit.java라는 Java 파일을 생성합니다.

touch ~/project/CharForDigit.java

초기 코드 추가

다음 코드를 CharForDigit.java 파일에 추가합니다.

public class CharForDigit {
    public static void main(String[] args) {
        int n1 = 8;
        int n2 = 23;
        int n3 = 30;
        char ch1 = Character.forDigit(n1, 9);
        char ch2 = Character.forDigit(n2, 25);
        char ch3 = Character.forDigit(n3, 36);
        System.out.println("The char representation of " + n1 + " in radix 9 is " + ch1);
        System.out.println("The char representation of " + n2 + " in radix 25 is " + ch2);
        System.out.println("The char representation of " + n3 + " in radix 36 is " + ch3);
    }
}

이 코드는 main 메서드를 가진 CharForDigit 클래스를 생성합니다. main 메서드는 forDigit() 메서드를 사용하여 서로 다른 기수 (radix) 에서 숫자의 문자 표현을 얻는 방법을 보여줍니다.

코드 컴파일 및 실행

다음 명령을 사용하여 CharForDigit.java 파일을 컴파일합니다.

javac CharForDigit.java

그런 다음, 다음 명령을 사용하여 코드를 실행합니다.

java CharForDigit

다음과 같은 출력을 볼 수 있습니다.

The char representation of 8 in radix 9 is 8
The char representation of 23 in radix 25 is n
The char representation of 30 in radix 36 is u

이 출력은 forDigit() 메서드가 예상대로 작동함을 확인합니다.

사용자 입력 추가

이제 숫자와 기수에 대한 사용자 입력을 받도록 코드를 수정해 보겠습니다. 초기 코드 뒤에 다음 코드를 추가합니다.

Scanner sc = new Scanner(System.in);
System.out.print("Enter digit: ");
int d = sc.nextInt();
System.out.print("Enter radix: ");
int r = sc.nextInt();
char result = Character.forDigit(d, r);
System.out.println("The character at radix \'" + r + "\' for the digit " + d + " is: " + result);

이 코드는 사용자에게 숫자와 기수를 묻고, 콘솔에서 입력을 읽어들인 다음, forDigit() 메서드를 사용하여 숫자의 문자 표현을 얻습니다.

사용자 입력을 포함한 코드 컴파일 및 실행

수정된 CharForDigit.java 파일을 다음 명령을 사용하여 컴파일합니다.

javac CharForDigit.java

그런 다음, 다음 명령을 사용하여 코드를 실행합니다.

java CharForDigit

콘솔에서 다음과 같은 프롬프트를 볼 수 있습니다.

Enter digit:

숫자 (예: 12) 를 입력하고 Enter 키를 누릅니다. 다음 프롬프트를 볼 수 있습니다.

Enter radix:

기수 (예: 16) 를 입력하고 Enter 키를 누릅니다. 그러면 다음 출력을 볼 수 있습니다.

The character at radix '16' for the digit 12 is: c

이 출력은 수정된 코드가 예상대로 작동함을 확인합니다.

잘못된 입력 테스트

잘못된 사용자 입력을 처리하도록 코드를 수정합니다. 사용자 입력 코드 뒤에 다음 코드를 추가합니다.

} catch (InputMismatchException e) {
    System.out.println("Invalid input!");
}

이 코드는 사용자가 정수로 파싱할 수 없는 입력을 입력할 때 Scanner 클래스에서 발생하는 InputMismatchException을 잡습니다.

수정된 코드 컴파일 및 실행

수정된 CharForDigit.java 파일을 다음 명령을 사용하여 컴파일합니다.

javac CharForDigit.java

그런 다음, 다음 명령을 사용하여 코드를 실행합니다.

java CharForDigit

콘솔에서 다음과 같은 프롬프트를 볼 수 있습니다.

Enter digit:

숫자가 아닌 입력 (예: "abc") 을 입력하고 Enter 키를 누릅니다. 다음 출력을 볼 수 있습니다.

Invalid input!

이 출력은 코드가 예상대로 잘못된 입력을 처리함을 확인합니다.

잘못된 진법 테스트

입력된 기수가 유효한지 확인하도록 코드를 수정합니다. 사용자 입력 코드 뒤에 다음 코드를 추가합니다.

if (r < Character.MIN_RADIX || r > Character.MAX_RADIX) {
    System.out.println("Invalid radix!");
    return;
}

이 코드는 입력된 기수가 최소 기수보다 작거나 최대 기수보다 큰지 확인합니다. 그렇다면 메시지를 출력하고 프로그램을 종료합니다.

수정된 코드 컴파일 및 실행 방법 (컴파일 오류 해결)

수정된 CharForDigit.java 파일을 다음 명령을 사용하여 컴파일합니다.

javac CharForDigit.java

그런 다음, 다음 명령을 사용하여 코드를 실행합니다.

java CharForDigit

콘솔에서 다음과 같은 프롬프트를 볼 수 있습니다.

Enter digit:

숫자 (예: 6) 를 입력하고 Enter 키를 누릅니다. 다음 프롬프트를 볼 수 있습니다.

Enter radix:

2 미만 또는 36 초과하는 기수 (예: 1 또는 100) 를 입력하고 Enter 키를 누릅니다. 다음 출력을 볼 수 있습니다.

Invalid radix!

이 출력은 코드가 예상대로 잘못된 기수를 처리함을 확인합니다.

요약

이 랩에서는 Character 클래스의 forDigit() 메서드를 사용하여 지정된 기수에서 숫자의 문자 표현을 얻는 방법을 배웠습니다. 또한 사용자 입력을 처리하고 유효한 입력을 확인하는 방법도 배웠습니다.