有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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


共 (2) 个答案

  1. # 1 楼答案

    通过使用Java8的lambda函数以简洁的方式实现这一点

    String str = "ABCD";
    int sum = str.chars()
                    .filter(c -> c >= 'A' && c <= 'Z')
                    .map(c -> 1 + c - 'A')
                    .reduce(0, Integer::sum);
    
  2. # 2 楼答案

    使用64来表示ascii表中“A”之前的字符很难理解,您可以直接在Java中执行字符之间的替换

    因此,如果'A'代表1,那么只需执行c-'A'+1就会为每个大写字母提供相应的整数值

    要得到总和,只需求和:将总和初始化为0,然后在for循环中,根据计算出的值加上增量总和。您可以使用增量分配操作:+=

    Scanner scannerTest = new Scanner(System.in);
        System.out.println("Enter a name here: ");
    
        String str = scannerTest.nextLine();
    
        char[] ch = str.toCharArray();
        int sum = 0;
        for (char c : ch) {
            sum += c - 'A' + 1;
        }
        System.out.println(sum);