본문 바로가기
BACK-END/JAVA

[JAVA] 2진수를 원하는 진수로 변환해서 출력하는 프로그램

by 썬키 2022. 12. 22.

1. 개요

입력한 2진수 값을 8진수, 10진수, 16진수로 변경하여 출력하는 프로그램

여러가지 문법으로 구현 가능하지만 오늘 배운 제어문을 이용하여 작성해보았다.

프로그램이니만큼 원하는만큼 반복해서 사용할 수 있도록 하였다.

 

2. 코드

public static void main(String[] args) {
		// TODO Auto-generated method stub

		System.out.println("=============\n    진수 변환 프로그램\n=============");
		
		Scanner scanner = new Scanner(System.in);
		
		while(true) {
			System.out.print("2진수의 값을 입력해주세요 > ");
			String strBin = scanner.next();
			
			// 10진수로 변환
			int i10 = Integer.parseInt(strBin, 2);
			
			// 8진수로 변환
			String strOct = Integer.toOctalString(i10);
			
			// 16진수로 변환
			String strHex = Integer.toHexString(i10);
			
			System.out.println("변환할 진수를 선택해주세요. \n1. 8진수\n2. 10진수\n3. 16진수");
			byte number = scanner.nextByte();
			
			switch(number) {
				case 1 : System.out.printf("입력한 값을 8진수로 변환한 값은 0%s 입니다.%n", strOct);
							break;
				case 2 : System.out.printf("입력한 값을 10진수로 변환한 값은 %d 입니다.%n",i10);
							break;
				case 3 : System.out.printf("입력한 값을 16진수로 변환한 값은 0x%s 입니다.%n", strHex);
							break;
				default : System.out.printf("1 ~ 3 사이의 정수값만 입력할 수 있습니다.%n입력값:%d%n", number);
							break;
			}
			
			System.out.println("다시 실행하시겠습니까?(Y/N)");
			String replay = scanner.next();
			
			if(replay.equalsIgnoreCase("y")) {
				continue;
			} else break;
		}
	}

 

3. 접근 방법

ㆍ2진수를 8,10,16진수로 변경하는 프로그램이니까 Scanner 객체에 담긴 값을 2진수를 담을 수 있는 String 타입의 참조변수에 담아야겠다고 생각했다.

ㆍWrapper 클래스 Integer 안에는 static 메소드로 toHexString, toBinaryString, toOctString이 존재하므로

이 메소드를 이용해보려고 했다.

ㆍ위의 세 메소드는 매개변수로 int 값을 받으니까 String으로 받은 2진수 값을 Integer 클래스의 parseInt(String x, int radix)를 이용하여 10진수로 변환해서 매개변수로 넣어주면 되겠다고 생각했다.

 

4. 개선할 점

ㆍ메뉴 입력을 담는 number 변수의 값이 default 일 때 메뉴 입력을 받는 부분으로 다시 가려면 어떻게 해야할까?

댓글