0

当我尝试将 charAt 相乘时,我收到了“大”数字:

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

结果:103

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

在 JAVA 文档上:

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

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

4

2 回答 2

12

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

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

于 2012-07-27T11:18:33.947 回答
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;
    }
}
于 2012-07-27T11:21:43.463 回答