소개
이 랩에서는 Character 클래스의 일부인 Java forDigit() 메서드에 대해 배우게 됩니다. 이 메서드는 지정된 기수 (radix) 에 따라 지정된 숫자에 대한 지정된 문자 표현을 반환합니다.
이 랩에서는 Character 클래스의 일부인 Java forDigit() 메서드에 대해 배우게 됩니다. 이 메서드는 지정된 기수 (radix) 에 따라 지정된 숫자에 대한 지정된 문자 표현을 반환합니다.
다음 명령을 사용하여 ~/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() 메서드를 사용하여 지정된 기수에서 숫자의 문자 표현을 얻는 방법을 배웠습니다. 또한 사용자 입력을 처리하고 유효한 입력을 확인하는 방법도 배웠습니다.