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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

提示: 该帖被管理员或版主屏蔽

4 个回复

正序浏览
支持下!
回复 使用道具 举报

回帖奖励 +10

回复得分
回复 使用道具 举报
//改进后,正确的方法。
  1. class myTranse //将一个数字转化为2、8、10进制
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 sop(transe(12978,16));
  6.                 sop(transe(11,8));
  7.                 sop(transe(11,2));
  8.         }
  9.         public static int[] transe(int num,int jinZhi)//此处的jinZhi指要将num转化为的进制类型,只能填2、8、16;
  10.         {
  11.          if(jinZhi==2)//当需要转化为二进制的时候
  12.         {
  13.                 int length=0;//定义数组的长度,初始化为0;
  14.                 int temp=num;//定义一个变量,临时存储num
  15.       while(temp>0)//第一次循环,确定数组的准确的长度
  16.                 {
  17.                   length++;
  18.                   temp>>=1;
  19.           }
  20.           int[] arr=new int[length];

  21.           while(num>0)//再次循环,将计算结果放入数组中
  22.                 {
  23.                         arr[--length]=num&1;
  24.                         num>>=1;
  25.                 }
  26.                 return arr;
  27.         }
  28.         if(jinZhi==8)//当要转化为8进制时
  29.         {
  30.                         int length=0;//定义数组的长度,初始化为0;
  31.                         int temp=num;//定义一个变量,临时存储num
  32.                  while(temp>0)//第一次循环,确定数组的准确的长度
  33.                 {
  34.                   length++;
  35.                   temp>>=3;
  36.            }
  37.           int[] arr=new int[length];

  38.           while(num>0)//再次循环,将计算结果放入数组中
  39.                 {
  40.                         arr[--length]=num&7;
  41.                         num>>=3;
  42.                 }
  43.                 return arr;
  44.         }
  45.         if(jinZhi==16)//当要转化为16进制时
  46.         {
  47.                         int length=0;//定义数组的长度,初始化为0;
  48.                         int temp=num;//定义一个变量,临时存储num
  49.                  while(temp>0)//第一次循环,确定数组的准确的长度
  50.                 {
  51.                   length++;
  52.                   temp>>=4;
  53.            }
  54.           int[] arr=new int[length];

  55.           while(num>0)//再次循环,将计算结果放入数组中
  56.                 {
  57.                         arr[--length]=((num&15)>9)?((num&15)+55):num&15;
  58.                         num>>=4;
  59.                 }
  60.                 return arr;
  61.         }

  62.     return new int[0];
  63.         }
  64.         private static void sop(int[] arr)
  65.         {
  66.                 for(int i=0;i<arr.length;i++)
  67.                 {
  68.                         if(arr[i]<10)
  69.                 System.out.print(arr[i]);
  70.                         else
  71.                                 System.out.print((char)arr[i]);
  72.                 }               
  73.                 System.out.println();
  74.         }
  75. }
复制代码
回复 使用道具 举报
上面是我学习进制转化是,误以为自己写好了,当我保存后,我发现我错了,哪里错了,亲们看看吧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马