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 일 때 메뉴 입력을 받는 부분으로 다시 가려면 어떻게 해야할까?
'BACK-END > JAVA' 카테고리의 다른 글
[JAVA]가계부 CRUD 프로그램 만들기 (0) | 2022.12.30 |
---|---|
[JAVA]주소록 CRUD 프로그램 만들기 (0) | 2022.12.28 |
중첩 for문 탈출하기 (0) | 2022.12.22 |
WRAPPER 클래스와 메소드 사용법 (0) | 2022.12.21 |
Scanner 그리고 BufferedReader 차이점 (0) | 2022.12.20 |
댓글