1 package com.scwyqin.Transition;
2
3 /*
4 * @author:scwyqin
5 * @date: 2020-3-2 19:21
6 */
7
8 import java.util.Scanner;
9
10 public class Transition {
11 public static void main(String[] args) {
12 //从键盘得到需要转换的值
13 System.out.print("请输入需要转换的值n:"); //提醒输入
14 Scanner sc=new Scanner(System.in); //new一个系统输入扫描仪
15 int n=sc.nextInt(); //得到键盘输入的值
16 sc.close(); //关闭扫描仪
17 //转换为二进制
18 TenToTwo(n);
19 //转换为八进制
20 TenToEight(n);
21 //转换为十六进制
22 TenToSixteen(n);
23
24 }
25
26
27 //用余数法将十进制转换为二进制
28 public static void TenToTwo(int n){
29 //声明一个数组用来存放二进制的每一位的值
30 int[] a=new int[50];
31 int i=0; //记录数组角标
32 //取余存入数组中,知道被除数为0
33 if (n>1){ //判断n是否需要进位
34 do {
35 a[i] = n % 2; //取余存入数组
36 n = n / 2;
37 i++; //数组角标
38 }while (n>0);
39 }
40 else{
41 a[i]=n;
42 }
43 System.out.print("二进制为:0b");
44 //遍历输出数组
45 for (i=i-1;i>=0;i--){
46 System.out.print(a[i]);
47 }
48 System.out.println(); //换行
49
50 }
51
52
53 //十进制转为八进制
54 public static void TenToEight(int n){
55 //声明一个数组用来存储八进制数字
56 int[] a=new int[50];
57 int i=0; //数组角标
58 //同二进制,取余存入数组
59 if(n>=8){ //判断n是否需要进位
60 do {
61 a[i]=n % 8;
62 n=n/8;
63 i++;
64 }while (n>0);
65 }else {
66 a[i]=n;
67 }
68 System.out.print("八进制为:O");
69 //遍历输出数组
70 for (i=i-1;i>=0;i--){
71 System.out.print(a[i]);
72 }
73
74 System.out.println(); //换行
75 }
76
77
78 //十进制转为十六进制
79 //方法同二进制和八进制,但是难点是怎么表示那几个字母
80 public static void TenToSixteen(int n){
81 //声明一个数组用来存储十六进制数字
82 int[] a=new int[10];
83 int i=0; //数组角标
84 //同二进制,取余存入数组
85 if(n>=16){ //判断n是否需要进位
86 do {
87 a[i]=n % 16;
88 n=n/16;
89 i++;
90 }while (n>0);
91 }else {
92 a[i]=n;
93 }
94 System.out.print("十六进制为:0x");
95 //遍历输出数组
96 for (i=i-1;i>=0;i--) {
97 //加一个条件判定语句,如果小于10就直接输出,大于10则转换为字母后输出
98 if (a[i] < 10) {
99 System.out.print(a[i]);
100 } else {
101 System.out.print(a[i] - 10 + 'a');
102 }
103 }
104 }
105 }