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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© liye20110 中级黑马   /  2013-6-22 10:11  /  3796 人查看  /  24 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 孙百鑫 于 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语言中是支持这样的操作啊?请大师指导!



评分

参与人数 1技术分 +1 收起 理由
刘凯 + 1 赞一个!

查看全部评分

24 个回复

倒序浏览
三元运算符不能写输出语句。
回复 使用道具 举报
王靖远 发表于 2013-6-22 10:31
三元运算符不能写输出语句。

谢谢!看来还是不能用C的方法理解这个三元运算符,:handshake
回复 使用道具 举报
最学得最根本的还不是三元运算符不能有输出语句,而是因为元元运算符是一个运算符,所以运算完必须要有一个结果,而楼主你的就违背了这一原则。这个也是三元运算符能简化if else代码,却了它自己的局限性。希望对楼主有帮助。

评分

参与人数 1技术分 +1 收起 理由
刘凯 + 1 赞一个!

查看全部评分

回复 使用道具 举报 1 0
刘利民 发表于 2013-6-22 10:45
最学得最根本的还不是三元运算符不能有输出语句,而是因为元元运算符是一个运算符,所以运算完必须要有一个 ...

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

很有帮助,多谢!:handshake
回复 使用道具 举报
万琪 来自手机 金牌黑马 2013-6-22 10:56:05
7#
,,,可以用syso,,问题在于,,bool变量要一个东西去接,,,而且要有冒号,,,

如~~
bool a = (1>2)?true:falsec
回复 使用道具 举报
hjz564 中级黑马 2013-6-22 15:49:55
8#
这你可以试一下,希望可以帮助到你

      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

评分

参与人数 1技术分 +1 收起 理由
孙百鑫 + 1

查看全部评分

回复 使用道具 举报 1 0
黑马的同志都很热情,感谢大家提出的解答,谢谢!
回复 使用道具 举报
既然你知道这是C里面所支持的写法,java和C是两种不同的语言,你说能一样吗?java有java自己三元运算符的格式,你要学java就得用java的格式来写,没有为什么,如果非要找个理由,那就是因为它是java的三元运算符。

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
请版主将此帖设置为已解决,谢谢!
回复 使用道具 举报
美女加油   我不是拿金币的  题出的不错   排版也很工整
回复 使用道具 举报
袁梦希 发表于 2013-6-23 09:00
美女加油   我不是拿金币的  题出的不错   排版也很工整

谢谢鼓励,加油!
回复 使用道具 举报
liye20110 发表于 2013-6-23 12:38
谢谢鼓励,加油!

嘿嘿  你准备去哪期啊
回复 使用道具 举报
袁梦希 发表于 2013-6-23 14:11
嘿嘿  你准备去哪期啊

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

报哪期都没事  关键自己能学就好了  ;P    我可是支持你的哈  在黑马还能见面呢
回复 使用道具 举报
看了一下,对三元运算符又巩固了一些,谢谢你的题。
回复 使用道具 举报
三元运算符不能有输出语句
回复 使用道具 举报
这个问题以前还真没注意过
回复 使用道具 举报
java里边的简化形式都有弊端
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马