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