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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 宋旭东 中级黑马   /  2013-7-2 22:51  /  1114 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在编程中想输出一个大于大于9 就输出16进制数的问题。demo程序如下:class Demo1
{
        public static void main(String[] args)
        {
                int a = 80;
                int temp = a >> 4;
                int b = temp & 15;

               (b >= 10)?(System.out.println((b - 10) + 'A'):(System.out.println(b) );
                /*if(b >= 10)
                {
                         System.out.println((char)(b-10)+'A');
                }
                else
                {
                         System.out.println(b);        
                }
                int test;
                test = (b>=10)?(char)(b-10)+'A':b;
                System.out.println(test);*/

              
        }
               
}


在编译中会出现错误提示



D:\java0327\day04>javac Demo1 .java
ArrayTest1.java:14: 错误: 不是语句
               (b >= 10)?(System.out.println((b - 10) + 'A')):( System.out.println(b) );
                        ^
1 个错误


为什么不能这样使用三元运算符?在C语言中是支持这样的操作啊?请大师指导!

评分

参与人数 1技术分 +1 收起 理由
特殊服务 + 1 看楼下解答

查看全部评分

2 个回复

倒序浏览
本帖最后由 黄少海 于 2013-7-3 00:08 编辑

(b >= 10)?(System.out.println((b - 10) + 'A')System.out.println(b) );       ?后面的值1 和值2 必须是能转换成通一类型的数据。语句中明显是控制台输出。所以语法错误哦。
回复 使用道具 举报
这位同学,三元运算符必须要接收后面运算的结果。
例如:int test = (b>=10)?(char)(b-10)+'A':b;   就像你后面写的那样。
同学努力吧~~~

评分

参与人数 1技术分 +1 收起 理由
特殊服务 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马