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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 徐-星星 中级黑马   /  2012-10-17 11:57  /  2543 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class Test01 {

        public static void main(String[] args) {
                // TODO Auto-generated method stub
                toHex_1(15);

        }
        public static void toHex_1(int num)
        {
                StringBuilder sb=new StringBuilder();
                for(int x=0;x<8;x++){
                        int temp=num%15;
                        if(temp>9)
                                sb.append((char)(temp-10+'A'));
                        else
                                sb.append(temp);
                        num=num>>>4;
                       
                }
                System.out.println(sb.reverse());
        }

}

各位同学,帮我看看问题出在哪里?或者正确的解法说一下。。

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

11 个回复

倒序浏览
int temp=num%15;  你这里不应该是: int temp=num&15;吗?

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

回复 使用道具 举报
马良 发表于 2012-10-17 12:04
int temp=num%15;  你这里不应该是: int temp=num&15;吗?

对对。。。感觉学了后面就忘记了前面的东西,总感觉哪里不对。。呵呵,谢谢你!
回复 使用道具 举报
好久不见的说~~顶一下
回复 使用道具 举报
徐-星星 发表于 2012-10-17 17:30
对对。。。感觉学了后面就忘记了前面的东西,总感觉哪里不对。。呵呵,谢谢你! ...

之前我也把这个弄混了,都这样的,慢慢来。
我前面的也忘的差不多了,还得往回看
回复 使用道具 举报
int temp=num%15;
这句改为:
int temp = num & 15;

除此之外,循环中的判断语句不要循环8次,用num != 0作为判断条件.
如果循环8次,会在正确结果前多补一些0(反正最后是8个数),这样的结果就比较怪异了,不符合人们已经习惯了的视觉.
回复 使用道具 举报
或者将   num=num>>>4;  改为  num=num/16;也可以吧
回复 使用道具 举报
汤瑞贺 发表于 2012-10-17 20:28
或者将   num=num>>>4;  改为  num=num/16;也可以吧

同学:你应该是新手吧。。好像你这样增加了算法的复杂度,并没有为我解决问题,谢谢你的回答!
回复 使用道具 举报
马镱洵 发表于 2012-10-17 18:52
int temp=num%15;
这句改为:
int temp = num & 15;

是的。。总感觉结果有些别扭,你提得很好,谢谢你的回答!
回复 使用道具 举报
黄小贝 发表于 2012-10-17 17:34
好久不见的说~~顶一下

呵呵  谢谢捧场啊!
回复 使用道具 举报
徐-星星 发表于 2012-10-18 11:39
同学:你应该是新手吧。。好像你这样增加了算法的复杂度,并没有为我解决问题,谢谢你的回答! ...

他其实只想告诉你,右移4位就是除以16.
左乘右除,右移1位就是除以2,右移2位就是除以4,右移3位就是除以8,右移4位就是除以16.
回复 使用道具 举报
徐-星星 发表于 2012-10-18 11:39
同学:你应该是新手吧。。好像你这样增加了算法的复杂度,并没有为我解决问题,谢谢你的回答! ...

:dizzy:, 敲错了,嘿嘿!我意思是把 你的这句 int temp=num%15;改为 int temp=num/16;也可以
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马