当前位置:  开发笔记 > 编程语言 > 正文

为什么在条件运算符中使用charAt时,我的输出完全不同

如何解决《为什么在条件运算符中使用charAt时,我的输出完全不同》经验,为你挑选了1个好方法。



1> yshavit..:

的结果someCondition ? a : b为普通型ab.在这种情况下,公共类型str.charAt(pos)(char)和-1(int)是int.这意味着您的str.charAt(pos)值被转换为int - 基本上,转换为其unicode代码点,在这种情况下与其ASCII值相同.

49是字符"1"的代码点.

如果你想让c成为数字'1',最简单的方法是减去'0'的代码点:

c = (++pos < str.length()) ? (str.charAt(pos) - '0') : -1;

这是有效的,因为所有数字都以unicode顺序排列,从"0"开始.通过从这些中减去char'0'的值 - 也就是int 48 - 你得到你想要的值:

'0' = 48   - 48 = 0
'1' = 49   - 48 = 1
...
'9' = 57   - 48 = 9

推荐阅读
php
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有