본문 바로가기

Programming/Java

Integer를 이용한 진법바꾸기로 간단한 예제 만들기

import java.util.Scanner;

public class changeNumber {
	Scanner sc = new Scanner(System.in);
	changeNumber(){
		showMenu();
	}
	public void showMenu() {
		int menu;
		System.out.println("--------- 변 환 메 뉴 ---------");
		System.out.println("\t1. 10진수 -> 2진수");
		System.out.println("\t2. 2진수 -> 10진수");
		System.out.println("\t3. 10진수 -> 16진수");
		System.out.println("\t4. 16진수 -> 10진수");
		System.out.println("\t5. 2진수 -> 16진수");
		System.out.println("\t6. 16진수 -> 2진수");
		while(true) {
			System.out.print("메뉴를 입력해 주세요 : ");
			menu = sc.nextInt();
			if(!(menu >= 1 && menu <= 6)) {
				System.out.println("1~6까지의 숫자를 입력하세요!!");
				continue;
			}
			break;	
		}
		switch(menu) {
		case 1: tenTo2();break;
		case 2: twoTo10();break;
		case 3: tenTo16();break;
		case 4: hexTo10();break;
		case 5: twoTo16();break;
		case 6: hexTo2();break;
		}
	}
	public int inputTen() {
		boolean checkNum = true;
		int number;
		while(true) {
			checkNum = true;
			System.out.print("변환할 10진수 숫자를 입력해주세요 : ");
			String num = sc.next();
			for (int i = 0; i < num.length(); i++) {
				if(num.charAt(i)<'0' || num.charAt(i)>'9') {
					checkNum = false;
					break;
				}
			}
			if(!checkNum) {
				System.out.println("올바른 숫자를 입력해주세요!");
				continue;
			}
			number = Integer.parseInt(num);
			break;
		}
		return number;
	}
	public String inputTwo() {
		boolean checkNum = true;
		String number;
		while(true) {
			checkNum = true;
			System.out.print("변환할 2진수 숫자를 입력해주세요 : ");
			number = sc.next();
			for (int i = 0; i < number.length(); i++) {
				if(number.charAt(i)<'0'|| number.charAt(i)>'1') {
					checkNum = false;
					break;
				}
			}
			if(!checkNum) {
				System.out.println("올바른 숫자를 입력해주세요!");
				continue;
			}
			break;
		}
		return number;
	}
	public String inputHex() {
		boolean checkNum = true;
		String number;
		while(true) {
			checkNum = true;
			System.out.print("변환할 16진수 숫자를 입력해주세요 : ");
			number = sc.next();
			number = number.toUpperCase();
			for (int i = 0; i < number.length(); i++) {
				if(!((number.charAt(i)>='0'&&number.charAt(i)<='9')||(number.charAt(i)>='A'&&number.charAt(i)<='F'))) {
					checkNum = false;
					break;
				}
			}
			if(!checkNum) {
				System.out.println("올바른 숫자를 입력해주세요!");
				continue;
			}
			break;
		}
		return number;
	}
	public void tenTo2() {
		int number = inputTen();
		System.out.println(number + "을/를 2진수로 변환 : "+ Integer.toBinaryString(number));
	}
	public void twoTo10() {
		String number = inputTwo();
		System.out.println(number + "을/를 10진수로 변환 : " + Integer.parseInt(number,2));
	}
	public void tenTo16() {
		int number = inputTen();
		System.out.println(number + "을/를 16진수로 변환 : "+ Integer.toHexString(number).toUpperCase());
	}
	public void hexTo10() {
		String number = inputHex();
		System.out.println(number + "을/를 10진수로 변환 : " + Integer.parseInt(number,16));
	}
	public void twoTo16() {
		String number = inputTwo();
		int decNum = Integer.parseInt(number,2);
		System.out.println(number + "을/를 16진수로 변환 : "+ Integer.toHexString(decNum).toUpperCase());
	}
	public void hexTo2() {
		String number = inputHex();
		int decNum = Integer.parseInt(number,16);
		System.out.println(number + "을/를 2진수로 변환 : "+ Integer.toBinaryString(decNum));
	}

}


public class run {

	public static void main(String[] args) {
		changeNumber cn = new  changeNumber();

	}

}


실행결과