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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李东城 中级黑马   /  2013-2-6 13:59  /  1992 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 李东城 于 2013-2-6 19:57 编辑
  1. public class OperateTest {

  2.     public static void main(String[] args) {
  3.         
  4.         int number = 13;
  5.         char ch1 = 'A', ch2='E';
  6.         System.out.print("I want to get a char: ");
  7.         System.out.println(number>10?(char)(number-10+'A'):number);
  8.         System.out.print("I want to get a char: ");
  9.         System.out.println((char)(number>10?(number-10+'A'):number));
  10.         System.out.print("I want to get a char: ");
  11.         System.out.println(ch1<ch2?(ch1+'A'):ch2);
  12.         System.out.print("I want to get a char: ");
  13.         System.out.println(number>10?(char)(number-10+'A'):(char)number);
  14.     }
  15. }
  16. 输出结果如下:
  17. I want to get a char: 68
  18. I want to get a char: D
  19. I want to get a char: 130
  20. I want to get a char: D

  21. "
  22.    System.out.print("I want to get a char: ");
  23.    System.out.println(number>10?(char)(number-10+'A'):number);"
复制代码
问题1.这句话,希望他能够输出的是 : I want to get a char:D ,但是实际输出的是:I want to get a char: 68
已经做了 “强制类型转换” ,为何输出的不是D而是68呢?

问题2.三元运算符要求,前后语句的返回类型一致吗?

  程序能够正常输入 : I want to get a char: D 的是自己做了修改的。

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

4 个回复

倒序浏览
是的,三元运算,在运算时会判断冒号两边的类型是否相同,如果不同,那么他会自动帮你提升类型,所以
你的第一个问题的,打印的是68,而不是D
如果你要输出D,应将冒号后面的number做char类型的强制转换;就可以输出D了
代码如下:
public class OperateTest {

    public static void main(String[] args) {
        
        int number = 13;
        char ch1 = 'A', ch2='E';
        System.out.print("I want to get a char: ");
        System.out.println(number>10?(char)(number-10+'A'):(char)number);
        System.out.print("I want to get a char: ");
        System.out.println((char)(number>10?(number-10+'A'):number));
        System.out.print("I want to get a char: ");
        System.out.println(ch1<ch2?(int)(ch1+'A'):ch2);
        System.out.print("I want to get a char: ");
        System.out.println(number>10?(char)(number-10+'A'):(char)number);
    }
}
回复 使用道具 举报
给你看篇文章 ,尤其是本文中的下文总结
http://blog.csdn.net/fhx19900918/article/details/8047549
回复 使用道具 举报
说的很详细,推荐的博客值得赞!
回复 使用道具 举报
不错。代码量很足
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马