如何获取循环中生成的char值的总和? [英] How to get sum of char values produced in a loop?
问题描述
很抱歉,如果标题具有误导性或令人困惑,但这是我的困境。
我输入一个字符串,并希望为字母表中的每个大写字母赋值(A = 1,.. Z = 26),然后在该字符串中添加每个字母的值。
Sorry if the title is misleading or is confusing, but here is my dilemma. I am inputting a string, and want to assign a value to each capitalized letter in the alphabet (A=1, .. Z=26) and then add the values of each letter in that string.
示例: ABCD = 10(自1 + 2 + 3 + 4)
Example: ABCD = 10 (since 1 + 2 + 3 + 4)
但是我不知道如何在字符串中添加所有值
But I don't know how to add all the values in the string
注意:这仅适用于大写字母和字符串
NOTE: This is only for capitalized letters and strings
public class Test {
public static void main(String[] args) {
Scanner scannerTest = new Scanner(System.in);
System.out.println("Enter a name here: ");
String str = scannerTest.nextLine();
char[] ch = str.toCharArray();
int temp_integer = 64;
for (char c : ch) {
int temp = (int) c;
if (temp <= 90 & temp >= 65){
int sum = (temp - temp_integer);
System.out.println(sum);
}
}
}
}
所以,你可以看到我打印出每次循环的总和,
意思是:如果我输入AB,输出将是1和2.
So, as you can see I print out the sum for each time its looped, meaning: if I input "AB", the output will be 1 and 2.
但是,我想更进一步,将这两个值加在一起,但我很难过,有什么建议或帮助吗? (注意:这不是作业或任何事情,只是练习问题集)
However, I want to go a step further, and add these two values together, but I'm stumped, any suggestions or help? (NOTE: this is not a assignment or anything, just practising problem sets)
推荐答案
我会更喜欢使用字符文字。你知道范围是 A
到 Z
( 1
到 26
),所以你可以从每个 char
中减去'A'(但是你需要加1,因为它没有从 0
开始。我还会在输入行上调用 toUpperCase
。类似的东西,
I would prefer to use the character literals. You know that the range is A
to Z
(1
to 26
), so you can subtract 'A' from each char
(but you need to add 1 because it doesn't start at 0
). I would also call toUpperCase
on the input line. Something like,
Scanner scannerTest = new Scanner(System.in);
System.out.println("Enter a name here: ");
String str = scannerTest.nextLine().toUpperCase();
int sum = 0;
for (char ch : str.toCharArray()) {
if (ch >= 'A' && ch <= 'Z') {
sum += 1 + ch - 'A';
}
}
System.out.printf("The sum of %s is %d%n", str, sum);
我用你的例子测试了
Enter a name here:
ABCD
The sum of ABCD is 10
这篇关于如何获取循环中生成的char值的总和?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!