원하는 10진수를 2진수~36진수중 원하는 기수로 변환해주는 코드이다.
package com.company;
import java.util.*;
public class Main {
//정수값 x를 r진수로 변환하여 배열 d에 아랫자리부터 넣어두고 자릿수를 반환.
static int cardConvR(int x, int r, char[] d){
int digits = 0; //변환후의 자릿수
String dchar = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
do{
d[digits++] = dchar.charAt(x%r); //x를 r로 나눈 나머지를 저장
x/=r;
}while (x != 0);
return digits;
}
public static void main(String[] args) {
Scanner scanner = 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.println("변환하는 음이 아닌 정수:");
no = scanner.nextInt();
}while (no<0);
do{
System.out.println("어떤 진수로 변환할까요? (2~36) :");
cd = scanner.nextInt();
}while (cd<2||cd>36);
dno = cardConvR(no, cd, cno); //no를 cd기수로 변환하고, 변환된 수의 자릿수를 dno에 담는다.
System.out.println(cd+"진수로는 ");
for (int i = dno-1; i >= 0; i--) { //변환된 수가 cno에 거꾸로 담겨있기때문에 이걸 반대로 출력해준다.
System.out.print(cno[i]);
}
System.out.println("입니다.");
System.out.println("한번 더 할까요? (1:예, 0:아니요)");
retry = scanner.nextInt();
}while (retry==1);
}
}
출처: doit자료구조 알고리즘 입문
'자료구조' 카테고리의 다른 글
스택(Stack) (0) | 2022.07.16 |
---|---|
배열검색 (이진검색) (0) | 2022.07.15 |
배열 검색 (선형검색, 보초법) (0) | 2022.07.15 |
한 해의 경과일수 구하기 [java] (0) | 2022.07.14 |
소수의 나열 [java] (0) | 2022.07.14 |