You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

charAt方法返回非预期值问题求助

问题解答:charAt返回ASCII码而非数字值的原因

嘿,这个坑我之前踩过!你遇到的问题其实是Java中char类型的特性导致的:

  • 核心原因:charAt()方法返回的是char类型的字符,而不是对应的数字值。在ASCII编码里,字符'0'对应的十进制数值就是48,当你直接把这个char赋值给int变量时,Java会自动将其转换为对应的ASCII码,所以你得到了48而不是预期的0。

  • 为什么循环遍历能得到正确值?
    大概率是你在循环里直接输出了char字符本身(比如System.out.println(char)),或者在循环中做了隐式转换(比如和'0'相减),这时候Java会把字符当成可视化的数字来处理,所以看起来结果是对的。

解决办法

这里有两种简单的方式可以得到正确的数字值:

方法1:利用ASCII码的连续性,减去字符'0'

因为字符'0'到'9'的ASCII码是连续递增的('0'=48,'1'=49...'9'=57),所以用目标字符减去'0'就能得到对应的数字:

String numeroDoc = "20298729700";
int lastNumber = numeroDoc.charAt(numeroDoc.length() - 1) - '0'; // 得到0

方法2:使用Character.getNumericValue()方法

这个方法是Java提供的专门用于获取字符对应数字值的工具方法,可读性更强:

String numeroDoc = "20298729700";
int lastNumber = Character.getNumericValue(numeroDoc.charAt(numeroDoc.length() - 1)); // 得到0

内容的提问来源于stack exchange,提问作者Kevin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 15:17:54