小编典典

如何获取循环中生成的char值的总和?

java

抱歉,标题令人误解或令人困惑,但这是我的两难选择。我正在输入一个字符串,并想为字母表中的每个大写字母分配一个值(A = 1,.. Z =
26),然后在该字符串中添加每个字母的值。

示例: ABCD = 10(因为1 + 2 + 3 + 4)

但是我不知道如何在字符串中添加所有值

注意 :这仅适用于 大写 字母和字符串

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。

但是,我想更进一步,将这两个值加在一起,但是我很困惑,有什么建议或帮助吗?( 注意: 这不是作业或任何事情,只是练习习题集)


阅读 278

收藏
2020-11-26

共1个答案

小编典典

我更喜欢使用字符文字。您知道范围是AZ126),因此您可以从每个范围中减去“ A”
char(但您需要加1,因为它的开头不是0)。我还要toUpperCase在输入行上打电话。就像是,

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
2020-11-26