我可以在Java中使用charAt吗?

时间:2012-07-27 11:13:47

标签: java string char

当我尝试乘以charAt时,我收到了“大号”:

String s = "25999993654";
System.out.println(s.charAt(0)+s.charAt(1));

结果:1​​03

但是当我想只收到一个号码时,没关系。

在JAVA文档中:

the character at the specified index of this string. The first character is at index 0.

所以我需要解释或解决方案(我认为我应该将字符串转换为int,但在我看来这是不必要的工作)

2 个答案:

答案 0 :(得分:12)

charintegral type。示例中s.charAt(0)的值是数字50的char版本('2'的字符代码)。 s.charAt(1)(char)53。当你对它们使用+时,它们会转换为整数,最终会得到103(而不是100)。

如果您尝试使用数字 25,是的,您必须解析它们。或者,如果您知道它们是标准的ASCII样式数字(字符代码48到57,包括在内),您可以从它们中减去48(因为48是'0'的字符代码)。或者更好的是,正如Peter Lawrey在其他地方指出的那样,使用Character.getNumericValue来处理更广泛的角色。

答案 1 :(得分:0)

是 - 你应该解析数字提取或使用ASCII图表功能并减去48:

public final class Test {
    public static void main(String[] a) {
        String s = "25999993654";
        System.out.println(intAt(s, 0) + intAt(s, 1));
    }

    public static int intAt(String s, int index) {
        return Integer.parseInt(""+s.charAt(index));
        //or
        //return (int) s.charAt(index) - 48;
    }
}