首页 > 解决方案 > 对字符串中的字符求和并打印最大的字符串(java)

问题描述

我被困在一些有趣的任务上。我有 3 个字符串(helloheavyword)。需要计算每个世界的总和并打印最大的世界和总和。用于计算 - a = 1,z = 26。所以 hello = 50,heavy = 61 & word = 60。最大的字符串是“heavy”,我需要像“heavy, 61”一样打印它。我找到了从一个字符串计算字符的代码:

String[] words = {"hello", "heavy", "word"};

String str = "abc";
int sum = 0;

for (char ch : str.toCharArray()) {
    if (ch >= 'a' && ch <= 'z') {
        sum += 1 + ch - 'a';
    }
}
System.out.printf("%s %d%n", str, sum); //the result is abc, 6

这段代码的结果是: abc, 6

问题是,如何计算所有单词以及如何打印最大的单词?我可以为每个单词写总和,然后再计算,但在我的任务中,单词是来自控制台的随机数。扫描没问题。

编辑:所有单词都是小写字母。

标签: javaarraysstringloopschar

解决方案


你可以这样做:

String[] words = { "hello", "heavy", "word" };

int biggestSum = 0;
String biggestWord = null;

for (String word : words) {
    int sum = 0;

    for (char ch : word.toLowerCase().toCharArray()) {
        if (ch >= 'a' && ch <= 'z') {
            sum += 1 + ch - 'a';
        }
    }

    if (sum > biggestSum) {
        biggestSum = sum;
        biggestWord = word;
    }

    System.out.printf("%s %d%n", word, sum);
}

System.out.printf("Biggest word: %s %d%n", biggestWord, biggestSum);

在这里,我们遍历 中的每个单词words,并sum记录每个单词的数量。在sum计算完之后,我们可以检查sum当前word的 是否大于目前发现的最大单词,如果是这样,我们会覆盖biggestWord


推荐阅读