黑马程序员技术交流社区

标题: 三元运算符问题,求解答 [打印本页]

作者: 宋旭东    时间: 2013-7-2 22:51
标题: 三元运算符问题,求解答
在编程中想输出一个大于大于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语言中是支持这样的操作啊?请大师指导!


作者: 黄少海    时间: 2013-7-2 23:03
本帖最后由 黄少海 于 2013-7-3 00:08 编辑

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




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2