java - 对字符串中的字符求和并打印最大的字符串(java)
问题描述
我被困在一些有趣的任务上。我有 3 个字符串(hello、heavy和word)。需要计算每个世界的总和并打印最大的世界和总和。用于计算 - 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
问题是,如何计算所有单词以及如何打印最大的单词?我可以为每个单词写总和,然后再计算,但在我的任务中,单词是来自控制台的随机数。扫描没问题。
编辑:所有单词都是小写字母。
解决方案
你可以这样做:
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
。
推荐阅读
- windows - 需要 W10 的脚本
- ios - Swift 4 将参数添加到 URLRequest 完成处理程序
- php - 列出并从 FTP 下载点击的文件
- azure - 创建机器后将负载均衡器附加到多个虚拟机(在这种情况下无法使用可用性集)
- reactjs - 在反应中在render()之前附加异步?
- python - 使用 python 脚本发送推文通知
- python-3.x - 从 DataFrame 创建矩阵
- c# - DebuggerDisplay 中的跨语言 DataRow 索引
- c# - 如何获取具有Unicode字符的快捷方式的目标路径
- command-line - 在控制台上输出 liquibase