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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

何周舟

黑马帝

  • 黑马币:0

  • 帖子:71

  • 精华:0

© 何周舟 黑马帝   /  2012-1-10 06:03  /  2944 人查看  /  14 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 何周舟 于 2012-1-12 14:38 编辑

                int a=60,b;
                while(a>0)
                {
                        b=a&15;
                        System.out.print(b>9?(char)((b-10)+'A'):b);
                        a=a>>>4;
                }
十进制转16进制
输出结果 6868
不用IF 不用数组
有不有什么方法把输出结果转换为char
还有为什么输出结果不是char?理论上应该是char啊

评分

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

查看全部评分

14 个回复

正序浏览
李建平 发表于 2012-1-10 10:48
public static void main(String[] args) {
             int a=60,b;
             long inum = 922337203685477580L;

谢了  我开始怎么没想到+‘0’ 呵呵
class a
{
        public static void main(String[] args)
        {
                int a=60,b;
                while(a>0)
                {
                        b=a&15;
                        System.out.print((char)(b>10?b-10+'A':b+'0'));
                        a=a>>>4;
                }
        }
}
回复 使用道具 举报
        public static void main(String[] args) {
             int a=60,b;
             long inum = 922337203685477580L;
                while(a>0)
                {
                        b=a&15;
                        char ch =(char)((b-9)+'A') ;
                        System.out.print((char)(b>9?((b-9)+'A') : (b+'0')));// 这样输出0-9

                          a=a>>>4;
                }
        }

评分

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

查看全部评分

回复 使用道具 举报
        public static void main(String[] args) {
             int a=60,b;
             long inum = 922337203685477580L;
                while(a>0)
                {
                        b=a&15;
                        char ch =(char)((b-9)+'A') ;
                        System.out.print((char)(b>9?((b-9)+'A'):(b+'0')));

                          a=a>>>4;
                }
        }
回复 使用道具 举报
admin 程序媛 2012-1-10 10:32:43
12#
何周舟 发表于 2012-1-10 08:52
本以为 六期在2-3月开班
看样子去不了
现在已经开班了

抓紧时间。
回复 使用道具 举报
本以为 六期在2-3月开班
看样子去不了
现在已经开班了
二月底就上课了
我也是一晚睡不着
就看看视频
发现前面看的好多又忘了
回复 使用道具 举报
嗯 睡不着看了一晚视频!还有一部分没看呢,加把劲争取去六期。呵呵
回复 使用道具 举报
何周舟 黑马帝 2012-1-10 08:46:33
9#
本帖最后由 何周舟 于 2012-1-10 08:49 编辑
李林轩 发表于 2012-1-10 08:45
呵呵、解决了就好! 要适当的休息啊 我也要去睡了


呵呵 你也一通宵?

我还在等 等人给我解答

为什么不可以用三元运算

理论可以转char 实际却不可以转

毕老师视频里没提 只是说了 用IF 和数组解决
回复 使用道具 举报
李林轩 黑马帝 2012-1-10 08:45:04
8#
呵呵、解决了就好! 要适当的休息啊 我也要去睡了{:soso_e147:}
回复 使用道具 举报
何周舟 黑马帝 2012-1-10 08:41:42
7#
通宵昏头了 有两个地方我自己写错了 呵呵  一个是 a&15 我写成了 60&15 所以结果是6868 还有一个错误 是应该减10 我写的是减9
这个方法 毕老师的视频里提到过 但是会把后面的3数字也强转为char  
回复 使用道具 举报
李林轩 发表于 2012-1-10 08:25
我机子上就输出的是D D 啊是不是你输错了!你在检查一下,复制我的代码把你那行输出删了

完整的是:

通宵昏头了 有两个地方我自己写错了 呵呵  一个是 a&15 我写成了 60&15 所以结果是6868 还有一个错误 是应该减10 我写的是减9
这个方法 毕老师的视频里提到过 但是会把后面的3数字也强转为char  不晓得是红桃还是黑桃了
刚刚有一时手贱点错了 回复了
回复 使用道具 举报
本帖最后由 李林轩 于 2012-1-10 08:41 编辑

我机子上就输出的是D D 啊是不是你输错了!你在检查一下,复制我的代码把你那行输出删了

完整的是:
     int a=60,b;
        while(a>0)
        {
                b=60&15;
                char ch =(char)((b-9)+'A') ;
                System.out.println((char)(b>9?((b-9)+'A'):b));

                  a=a>>>4;
        }

你那个出错的原因是:

表达式1是char类型的变量,表达式2是int类型的变量,没有常量表达式。因此要进行类型提升,把char类型提升为int类型,整个条件运算符结果的类型就是int类型。所以输出结果就是int类型

评分

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

查看全部评分

回复 使用道具 举报
李林轩 发表于 2012-1-10 08:06
把输出的结果强制转换就行啦! 如: System.out.println((char)(b>9?((b-9)+'A'):b));

试了 结果一样 6868
回复 使用道具 举报
本帖最后由 李林轩 于 2012-1-10 08:42 编辑

把输出的结果强制转换就行啦! 如: System.out.println((char)(b>9?((b-9)+'A'):b));
回复 使用道具 举报
等待ING....
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马