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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© trhthyj 中级黑马   /  2014-4-22 00:00  /  670 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

问题在代码中:

  1. class ToBinHex
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 trans(8709,15,4);
  6.         }

  7.         public static void trans(int num,int base,int offset)//base是要与上的数,offset是右移的位数
  8.         {
  9.                
  10.                

  11.                 char[] chs={'0','1','2','3','4','5','6','7',
  12.                                 '8','9','A','B','C','D','E','F'};
  13.                 char[] arr=new char[32];
  14.                 int pos=arr.length;
  15.                 while(num!=0)
  16.                 {
  17.                         int temp=num&base;
  18.                         arr[--pos]=chs[temp];
  19.                         num=num>>>offset;
  20.                 }
  21.                 for(int x=pos;x<arr.length;x++)
  22.                 {
  23.                         System.out.print(arr[x]);
  24.                 }
  25.                
  26.                 //为什么把if语句放在这里打印出来“22050”,而放在trans函数第一行就打印的是“2205”??
  27.                 if(num==0)
  28.                 {
  29.                         System.out.println(0);
  30.                         return;
  31.                 }

  32.                
  33.                
  34.         }
  35. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1 神马都是浮云

查看全部评分

3 个回复

倒序浏览
  1. class ToBinHex
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 trans(8709,15,4);
  6.         }

  7.         public static void trans(int num,int base,int offset)//base是要与上的数,offset是右移的位数
  8.         {
  9.                
  10.                

  11.                 char[] chs={'0','1','2','3','4','5','6','7',
  12.                                 '8','9','A','B','C','D','E','F'};
  13.                 char[] arr=new char[32];
  14.                 int pos=arr.length;
  15.                 while(num!=0)
  16.                 {
  17.                         int temp=num&base;
  18.                         arr[--pos]=chs[temp];
  19.                         num=num>>>offset;
  20.                 }
  21.                 for(int x=pos;x<arr.length;x++)
  22.                 {
  23.                         System.out.print(arr[x]);
  24.                 }
  25.                
  26.                 //你执行完了 num==0 了 就在打印一次0呗,  放在第一行 刚开始没满足嘛 ,所以咯,,   就是程序执行顺序问题  搞定
  27.                 if(num==0)
  28.                 {
  29.                         System.out.println(0);
  30.                         return;
  31.                 }

  32.                
  33.                
  34.         }
  35. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
num会每次无符号右移嘛 对不对,  刚开始不是0 就不会进入  右移最后等于0了 就会执行输出0     

注意程序结构顺序就好了   


亲   晚安      睡觉了
回复 使用道具 举报
好的,谢谢!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马