Java如何将多个double值的汇总结果存入列表 计分累加逻辑错误如何修复
问题解答
积分计算异常原因与修复
存在的错误
- 第二个循环执行次数错误:你定义的循环规则是
for (int a = 0; a < 1; a++),整个循环只会执行1次,无法完成5个赛事的排名录入。 - 索引变量误用:第一个循环结束后,变量
i的值已经是5,第二个循环内所有数组操作都固定使用索引5,每次录入的排名和积分都会覆盖同一个位置的数值,最终只保留最后一次录入的20分,无法累加。 - 代码块缺少闭合:第二个for循环的末尾缺少闭合大括号
}。
修正后的代码示例
// 录入5个赛事名称 for (i = 0; i < 5; i++) { System.out.println("Enter Name of the event " + (i + 1) + " that the teams are entering"); Tevent[i] = scan.next(); } // 录入每个赛事的排名并计算积分 int totalScore = 0; // 新增总积分变量,也可以用teamScore数组累加 for (int a = 0; a < 5; a++) { // 修改循环次数为5次 System.out.println("Enter rank of the team on the event: " + Tevent[a]); teamRank[a] = scan.nextInt(); // 改用循环变量a作为索引 if (teamRank[a] > 3) { System.out.println("This team will not be awarded points"); } else if (teamRank[a] == 3) { System.out.println("5 points is granted for this event"); teamScore[a] = teamScore[a] + 5; totalScore +=5; } else if (teamRank[a] == 2) { System.out.println("10 points is granted for this event"); teamScore[a] = teamScore[a] + 10; totalScore +=10; } else if (teamRank[a] == 1) { System.out.println("20 points is granted for this event"); teamScore[a] = teamScore[a] + 20; totalScore +=20; } } // 输出总积分 System.out.println("Total score: " + totalScore);
这里把多个独立if改成了else if,可以减少不必要的判断,性能更优。
double类型汇总值存入列表的实现方法
Java中可以用泛型为Double的ArrayList实现该需求,示例如下:
- 首先导入对应的工具类:
import java.util.ArrayList;
- 初始化存储double汇总值的列表:
ArrayList<Double> summaryList = new ArrayList<>();
- 存入double值的操作:
// 假设你计算得到了多个汇总值 double team1Total = 98.5; double team2Total = 87.0; double team3Total = 92.5; // 存入列表 summaryList.add(team1Total); summaryList.add(team2Total); summaryList.add(team3Total);
- 读取列表中值的操作:
// 遍历读取所有值 for (double score : summaryList) { System.out.println(score); } // 读取指定位置的值,索引从0开始 double firstTeamScore = summaryList.get(0);
内容的提问来源于stack exchange,提问作者Bonzowo
相关产品推荐
相关产品推荐

