-4

我想把这个词分成像“ABCD”这样的字符到ABCD,然后如果我们假设A=1,B=2,......和Z=26,那么我想把这个序列分配给每个字符并且将其相加以实现输出。这怎么能做到..??

4

3 回答 3

0

尝试以下代码:

String data = "ABCD";

        int sum=0;
        String dataToProcess = data.toLowerCase();
        for(int i=0;i<dataToProcess.length();i++){
            char c = dataToProcess.charAt(i);

            sum += c - 96;
        }

        System.out.println("sum is "+sum);
于 2012-11-05T11:39:29.067 回答
0

我假设你已经维护了一个map用于映射你characters的一些numbers. 然后,您可以简单地拆分字符串empty string以获取单个字符。然后遍历您的数组以获得总和。

请注意,拆分empty string将使您获得一个空字符串作为数组中的第一个元素。因为,Java 中的empty字符串在字符串的开头包含一个字符串。

所以,你可以试试这个代码: -

    String str = "ABCDEF";
    String[] arr = str.split("");
    int sum = 0;

    Map<String, Integer> map = new HashMap<String, Integer>() {
        {
            put("A", 1); put("B", 2); put("C", 3);
            put("D", 4); put("E", 5); put("F", 6);
        }
    };

    System.out.println(Arrays.toString(arr));

    // Iteration starts from index 1, as 1st element is an empty string
    for (int i = 1; i < arr.length; i++) {
        sum += map.get(arr[i]);
    }

    System.out.println("Sum = " + sum);

输出: - : -

[, A, B, C, D, E, F]
Sum = 21

或者,您也可以使用String#toCharArray方法,将您的字符串直接转换为character array单个字符。在这种情况下,您的地图声明应如下所示: -Map<Character, Integer>

String str = "ABCDEF";
Map<Character, Integer> map = new HashMap<Character, Integer>() {
        {
            put('A', 1); put('B', 2); put('C', 3);
            put('D', 4); put('E', 5); put('F', 6);
        }
};
for (char ch: str.toCharArray()) {
    sum += map.get(ch);
}
于 2012-11-05T11:33:36.417 回答
0
int sum = 0;
for (char ch: theWordToCount.toCharArray()) {
     sum += ((int)ch) - 64;
}

由于“A”的 ASCII 码是 65,这将为 A 添加 +1,为 B 添加 +2,依此类推。

您将不得不处理大小写,例如小写减去 96。

于 2012-11-05T11:35:57.197 回答