int n;
System.out.println(n>9?(char)(n-2+'a'):n);//如果n=12,为什么结果打印的是67呢?

解决方案 »

  1.   

    你想打印字母?System.out.println((char)  (n>9? n-2+'a' : n)   );原先的代码
    condition ? char : int
    整个表达式由于不平衡,最终还是int类型
      

  2.   

    最终结果是:107
    System.out.println((char)  (n>9? n-2+'a' : n)   );
    n=12时,取(char)(n-2+'a')的值,就是107
      

  3.   

    int n = 12;
    System.out.println(n>9?(char)(n - 2 + 'a') : n);
    我算的也是107哈 是我理解错题目了 还是楼主发错了哈
      

  4.   

    因为Java底层是用int计算的,肯定输出的是数字啊
    如果你是想输出字符串的话,可以在输出语句中用Integer.toHexString(),代码应该这样写:
    char c = n>9 ? n-2+'a' :n;
    System.out.println(Integer.toHexString(c));
      

  5.   

    http://www.2cto.com/kf/201209/156069.html