挺好:
- import java.util.*;
- class Transition
- {
- public static void main(String[] args)
- {
- //x:表示初始的进制数。y:表示转换成的进制数。
- int x, y;
- int num; //num:表示用户输入的数据转换为int类型的值。
- boolean flag = true; // flag:用于控制用户是否要进行下一轮数据的转换。
- while(flag)
- {
- flag = false;
- System.out.println("请输入您输入的数据是几进制的:如:2,8,10或是16:");
- x = input();
- x = judge(x);
- System.out.println("请输入您想要转换进制的数:");
- num = input(x);
- System.out.println("请输入您想要将数据转换成几进制:如:2,8,10或16");
- y = input();
- y = judge(y);
- zhuanHuan(num,x,y);
- System.out.println("您是否想进行下一次数据转换?是请输入:yes,否则输入:no");
- flag = goOn();
- }
- }
- //goOn():根据用户输入yes或no改变flag的值。
- public static boolean goOn()
- {
- Scanner s = new Scanner(System.in);
- String str = s.next();
- if(str.equals("yes")) return true;
- else if(str.equals("no")) return false;
- else
- {
- System.out.println("您输入的格式不正确,请输入yes或者是no。");
- goOn();
- }
- }
- //input():用于接收用户输入的进制数。
- public static int input()
- {
- Scanner s = new Scanner(System.in);
- String str = s.next();
- int temp = Integer.parseInt(str);
- return temp;
- }
- //judge():用于判断进制输入是否正确。
- public static int judge(int n)
- {
- switch(n)
- {
- case 2: return n;
- case 8: return n;
- case 10: return n;
- case 16: return n;
- default:
- {
- System.out.println("您输入的进制不正确,您只能输入2,8,10或者16。请重新输入:");
- n = input();
- n = judge(n);
- return n;
- }
- }
- }
- //input(int x):用于接收用户输入的数据,并将它转换为十进制数。
- public static int input(int x)
- {
- Scanner s = new Scanner(System.in);
- String str = s.next();
- int temp = 0;
- try
- {
- temp = Integer.parseInt(str,x);
-
- }
- catch (NumberFormatException e)
- {
- System.out.println("您输入的数据格式不正确,请输入正确的数据格式:");
- temp = input(x);
- }
- return temp;
- }
-
- //zhuanHuan方法:根据要转换成的进制数去调用相应的转换函数。
- public static void zhuanHuan(int num, int x, int y)
- {
- switch(y)
- {
- case 2: toBin(num,x); break;
-
- case 8: toOct(num,x); break;
-
- case 10:
- {
- System.out.println(num+"的十进制形式是:" +num);
- break;
- }
- case 16: toHex(num,x); break;
-
-
- }
- }
- //下面这三个方法分别转换成相应的进制。
- public static void toBin(int num,int x)
- {
- System.out.print("您输入的"+x+"进制数的二进制形式是:");
- trans(num,1,1);
- }
- public static void toOct(int num,int x)
- {
- System.out.print("您输入的"+x+"进制数的八进制形式是:");
- trans(num,7,3);
- }
- public static void toHex(int num,int x)
- {
- System.out.print("您输入的"+x+"进制数的十六进制形式是:");
- trans(num,15,4);
- }
-
-
- //trans():上边三个进制转换函数调用这个方法就可以完成进制的转换。
- public static void trans(int num, int base, int offset)
- {
- if(num == 0)
- {
- System.out.println(0);
- return;
- }
- char[] chs = {'0','1','2','3',
- '4','5','6','7',
- '8','9','A','B',
- 'C','D','E','F'};
- char[] arr = new char[32];
- int pos = arr.length;
- while(num != 0)
- {
- int temp = num & base;
- arr[--pos] = chs[temp];
- num = num >>> offset;
- }
- for(int i = pos; i < arr.length; i++)
- {
- System.out.print(arr[i]);
- }
- System.out.println();
- System.out.println();
- }
- }
复制代码 |