黑马程序员技术交流社区

标题: 三元运算符处理问题 [打印本页]

作者: liye20110    时间: 2013-6-22 10:11
标题: 三元运算符处理问题
本帖最后由 孙百鑫 于 2013-6-22 22:04 编辑

在编程中想输出一个大于大于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-6-22 10:31
三元运算符不能写输出语句。
作者: liye20110    时间: 2013-6-22 10:34
王靖远 发表于 2013-6-22 10:31
三元运算符不能写输出语句。

谢谢!看来还是不能用C的方法理解这个三元运算符,:handshake
作者: 刘利民    时间: 2013-6-22 10:45
最学得最根本的还不是三元运算符不能有输出语句,而是因为元元运算符是一个运算符,所以运算完必须要有一个结果,而楼主你的就违背了这一原则。这个也是三元运算符能简化if else代码,却了它自己的局限性。希望对楼主有帮助。
作者: 刘利民    时间: 2013-6-22 10:46
刘利民 发表于 2013-6-22 10:45
最学得最根本的还不是三元运算符不能有输出语句,而是因为元元运算符是一个运算符,所以运算完必须要有一个 ...

更正几个字,打五笔打太快了。。。。“觉得”   “三元运算符”
作者: liye20110    时间: 2013-6-22 10:50
刘利民 发表于 2013-6-22 10:45
最学得最根本的还不是三元运算符不能有输出语句,而是因为元元运算符是一个运算符,所以运算完必须要有一个 ...

很有帮助,多谢!:handshake
作者: 万琪    时间: 2013-6-22 10:56
,,,可以用syso,,问题在于,,bool变量要一个东西去接,,,而且要有冒号,,,

如~~
bool a = (1>2)?true:falsec
作者: hjz564    时间: 2013-6-22 15:49
这你可以试一下,希望可以帮助到你

      static void Main(string[] args)
        {
            bool flag = (4 > 5) ? (5 > 6) : (6 > 5);
            bool flag2 = (4 > 5) ? (5 < 6) : (6 < 5);
            Console.WriteLine(flag);
            Console.WriteLine(flag2);
            Console.ReadKey();
        }
显示结果 true fase
作者: liye20110    时间: 2013-6-22 17:55
黑马的同志都很热情,感谢大家提出的解答,谢谢!
作者: 280270738    时间: 2013-6-22 20:58
既然你知道这是C里面所支持的写法,java和C是两种不同的语言,你说能一样吗?java有java自己三元运算符的格式,你要学java就得用java的格式来写,没有为什么,如果非要找个理由,那就是因为它是java的三元运算符。
作者: liye20110    时间: 2013-6-22 21:52
请版主将此帖设置为已解决,谢谢!
作者: 袁梦希    时间: 2013-6-23 09:00
美女加油   我不是拿金币的  题出的不错   排版也很工整
作者: liye20110    时间: 2013-6-23 12:38
袁梦希 发表于 2013-6-23 09:00
美女加油   我不是拿金币的  题出的不错   排版也很工整

谢谢鼓励,加油!
作者: 袁梦希    时间: 2013-6-23 14:11
liye20110 发表于 2013-6-23 12:38
谢谢鼓励,加油!

嘿嘿  你准备去哪期啊
作者: liye20110    时间: 2013-6-23 20:56
袁梦希 发表于 2013-6-23 14:11
嘿嘿  你准备去哪期啊

我是6月16号才开始学的java基础,想冲刺一下到21期的,但是现在看来这比较难,因为网络这一块内容之前没有做过,所以现在决定到22期报到了,这样也可以把基础知识学得更详细了。
作者: 袁梦希    时间: 2013-6-23 21:19
liye20110 发表于 2013-6-23 20:56
我是6月16号才开始学的java基础,想冲刺一下到21期的,但是现在看来这比较难,因为网络这一块内容之前没 ...

报哪期都没事  关键自己能学就好了  ;P    我可是支持你的哈  在黑马还能见面呢
作者: ⋛⋌⋚JEEP    时间: 2014-7-14 23:15
看了一下,对三元运算符又巩固了一些,谢谢你的题。
作者: 日光加蓝    时间: 2014-7-28 13:38
三元运算符不能有输出语句
作者: 刘斌2014    时间: 2014-8-2 09:26
这个问题以前还真没注意过
作者: 狐狸FMF    时间: 2014-8-12 22:12
java里边的简化形式都有弊端
作者: 些许    时间: 2014-12-22 18:51
看着  就头晕啊  飘过!!!
作者: yuanyuemao88    时间: 2015-8-2 17:42
还没琢磨过......................
作者: 忧伤-hy    时间: 2015-8-19 14:10
又来点赞了,不知道能不能获奖
作者: 存在着的天空    时间: 2015-12-25 21:13
我觉得是static void Main(string[] args)
        {
            bool flag = (4 > 5) ? (5 > 6) : (6 > 5);
            bool flag2 = (4 > 5) ? (5 < 6) : (6 < 5);
            Console.WriteLine(flag);
            Console.WriteLine(flag2);
            Console.ReadKey();
        }
作者: kangkang_59    时间: 2015-12-27 19:30
好厉害,顶一个!!!!!




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