A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

  1. import java.util.Scanner;

  2. class czb{

  3.         static char chs[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
  4.         static int pos=0;
  5.         static char[] a=new char[32];
  6.         static void change(int num,int yuwho,int offset){
  7.                 while(num!=0){
  8.                         int temp=num&yuwho;
  9.                         a[pos++]=chs[temp];
  10.                         num=num>>>offset;
  11.                 }
  12.                 for(int i=pos-1;i>=0;i--){
  13.                         System.out.print(a[i]+" ");
  14.                 }
  15.                 System.out.println();
  16.         }

  17.         public static void main(String args[]){

  18.                 System.out.println("请输入一个十进制数");
  19.                 Scanner in=new Scanner(System.in);
  20.                 int num=in.nextInt();
  21.                 System.out.println("请选择要将它转换成的进制数,输入1转换为二进制,输入2转换为八进制,输入3转换为十六进制");
  22.                 int choice=in.nextInt();
  23.                 switch(choice){
  24.                 case 1:
  25.                         change(num,1,1);
  26.                         break;
  27.                 case 2:
  28.                         change(num,7,3);
  29.                         break;
  30.                 case 3:
  31.                         change(num,15,4);
  32.                         break;
  33.                 default:
  34.                         return;
  35.                 }
  36.         }
  37. }
复制代码

1 个回复

正序浏览
我想了想该代码可以进行一下优化,在输入num后进行一次判断,如果输入的值是0或1,可以直接输出对于的2,8,16进制数,然后直接break;因为它们对应的几个进制数都一样。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马