반응형
본 포스팅은 'Do it! 자료구조와 함께 배우는 알고리즘 입문 Java편'을 스터디 한 내용입니다.
기수 : 수를 나타내느데 기초가 되는 수로 10진수에서는 0~9까지의 정수를 말함.
전위형 증가연산자 ++a
- ++을 앞에 놓으면 식 전체를 평가하기 전 피연산자의 값을 증가시킴
- 예를들어 a값이 3일 때, b = ++a를 실행하면 ++a평가값 4를 b에 대입시키고 a==b==4가 됨.
후위형 증가연산자 a++
- ++를 뒤에 놓으면 식 전체를 평가한 후에 피연산자의 값을 증가시킴.
- 예를들어 a값이 3일 때, b = a++을 실행하면 3을 b에 먼저 대입하고 ++이 수행되어,
a는 4가 됨. 결국 a==4, b==3
기수변환(진수변환) 과정을 포함하여 출력하는 계산기 만들기
목차
1. 변환 메소드
2. main 메소드
3. 실행결과
4. 전체코드
1. 변환 메소드
x : 변환될 10진수
r : 변환할 진수(2~36)
digitChar : 변환된 진수의 각 자리수에 입력될 값
chartAt() 메소드 : String 문자열의 index번 째 문자를 찾아가는 메소드
static int cardConvRev(int x, int r, char[] d) {
int digits = 0;
String digitChar = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
System.out.println(r+"| "+x);
System.out.println(" + ------");
do {
d[digits++] = digitChar.charAt(x % r);
if(x/r !=0) {
System.out.println(r+"| "+x/r+" ...."+digitChar.charAt(x % r));
System.out.println(" + ------");
}else {
System.out.println(" "+x/r+" ...."+digitChar.charAt(x % r));
}
x /= r;
}while(x != 0);
return digits;
}
2. main 메소드
public static void main(String[] args) {
Scanner stdIn = new Scanner(System.in);
int convertedNum; //변환될 수
int cardNum; //기수 00진수
int digitNum; //변환 후 자리수
int retry; //재시도 여부
char[] cno = new char[32];
System.out.println("10진수를 기수 변환 합니다.");
do {
do {
System.out.println("변환하는 음이 아닌 정수 : ");
convertedNum = stdIn.nextInt();
}while(convertedNum<0);
do {
System.out.println("어떤 진수로 변환할까요? (2~36) : ");
cardNum = stdIn.nextInt();
}while(cardNum<2 || cardNum > 36);
digitNum = cardConvRev(convertedNum, cardNum, cno);
System.out.print(cardNum+"진수로 ");
for(int i=digitNum-1; i>=0; i--) {
System.out.print(cno[i]);
}
System.out.println(" 입니다.");
System.out.println("다시 시도 할까요? (1.예 / 0.아니오) : ");
retry=stdIn.nextInt();
}while(retry==1);
}
3. 실행결과
4. 전체코드
import java.util.Scanner;
/**
* @Date 2020. 1. 26.
* @Time 오후 4:03:09
* @author BRYANT
* =====================
* Writing Developer
*/
public class cardConvPractice {
/**
* @Author : BRYANT
* @Date : 2020. 1. 26.
* @Method Name : cardConvRev
* @return : int
*/
static int cardConvRev(int x, int r, char[] d) {
int digits = 0;
String digitChar = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
System.out.println(r+"| "+x);
System.out.println(" + ------");
do {
d[digits++] = digitChar.charAt(x % r);
if(x/r !=0) {
System.out.println(r+"| "+x/r+" ...."+digitChar.charAt(x % r));
System.out.println(" + ------");
}else {
System.out.println(" "+x/r+" ...."+digitChar.charAt(x % r));
}
x /= r;
}while(x != 0);
return digits;
}
public static void main(String[] args) {
Scanner stdIn = new Scanner(System.in);
int convertedNum; //변환될 수
int cardNum; //기수 00진수
int digitNum; //변환 후 자리수
int retry; //재시도 여부
char[] cno = new char[32];
System.out.println("10진수를 기수 변환 합니다.");
do {
do {
System.out.println("변환하는 음이 아닌 정수 : ");
convertedNum = stdIn.nextInt();
}while(convertedNum<0);
do {
System.out.println("어떤 진수로 변환할까요? (2~36) : ");
cardNum = stdIn.nextInt();
}while(cardNum<2 || cardNum > 36);
digitNum = cardConvRev(convertedNum, cardNum, cno);
System.out.print(cardNum+"진수로 ");
for(int i=digitNum-1; i>=0; i--) {
System.out.print(cno[i]);
}
System.out.println(" 입니다.");
System.out.println("다시 시도 할까요? (1.예 / 0.아니오) : ");
retry=stdIn.nextInt();
}while(retry==1);
}
}
반응형
'old > 자료구조_알고리즘' 카테고리의 다른 글
[Java] 검색 - 선형(순차)검색 / 보초법 (0) | 2020.01.27 |
---|---|
[Java] 검색 알고리즘 (0) | 2020.01.26 |
[Java]소수의 나열, 소수인지 판단하는 알고리즘 (0) | 2020.01.26 |
[Java]배열요소 역순으로 복사하기 (0) | 2020.01.26 |
[Java]배열 요소 역순으로 정렬하기 (1) | 2020.01.25 |