728x90
320x100
package chap02;
import java.util.Scanner;
// 입력 받은 10진수를 2진수~36진수로 기수 변환하여 출력.
public class CardConv2 {
// 정숫값 x를 r진수로 변환하여 배열 d에 아랫자리부터 넣어 두고 자릿수를 반환
static int cardConv(int x, int r, char[] d){
int digits = 0; //반환후의 자릿수
String dchar = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
do {
d[digits++] = dchar.charAt(x % r); //r을 나눈 나머지를 저장
x /= r;
} while (x != 0);
for (int i = 0; i < digits / 2; i++){ //배열 d의 숫자 문자열을 역순으로 정렬
char t = d[i];
d[i] = d[digits - i - 1];
d[digits - i - 1] = t;
}
return digits;
}
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int no; //변환하는 정수
int cd; //기수
int dno; //변환 후의 자릿수
int retry; //다시 한번?
char[] cno = new char[32]; // 변환후 각 자리의 숫자를 넣어주는 문자 배열
System.out.println("10진수를 기수 변환합니다.");
//반복할지 말지 입력 받기
do{
// 정수 입력받기
do {
System.out.print("변환하는 음이 아닌 정수: ");
no = scan.nextInt();
}while(no < 0);
//변환할 기수 입력받기
do{
System.out.print("어떤 진수로 변환할까요? (2~36): ");
cd = scan.nextInt();
} while(cd < 2 || cd > 36);
dno = cardConv(no, cd, cno); //no를 cd진수로 변환
System.out.print(cd + "진수로 ");
for (int i = 0; i < dno; i++){ //순서대로 출력
System.out.print(cno[i]);
}
System.out.println(" 입니다.");
System.out.print("한 번 더 할까요? (1.예 / 2.아니오): ");
retry = scan.nextInt();
} while(retry == 1);
}
}
728x90
320x100
'💻 하나씩 차곡차곡 > 자료구조 & 알고리즘(JAVA)' 카테고리의 다른 글
배열 복사하기 (chap02/CloneArray) (0) | 2022.10.23 |
---|---|
1000 이하의 소수를 나열하기 (chap02/PrimeNumber3) (0) | 2022.10.22 |
배열요소를 역순으로 복사하기 (chap02/Practice05) (0) | 2022.10.20 |
배열요소를 복사하기 (chap02/Practice04) (0) | 2022.10.19 |
배열 요소의 합계 구하기 (chap02/Practice03) (0) | 2022.10.18 |