You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java使用LinkedList存储球场收入时打印两次不同结果的原因是什么

问题原因分析
  • 单场收入变量被篡改,底层存储数据错误:你没有单独定义总收益临时变量,直接用接收单场赛事收入的rev变量做累加计算。计算完成后rev已经变为总收益数值,下次循环开头执行gameRevenue.add(rev)时,存入列表的不是本场的单场收入,而是累加后的总收益,后续所有计算的基础数据全部失真。
  • 遍历匹配时重复输出中间结果:遍历历史记录的过程中,每匹配到一条同名球场的记录就会打印一次当前的累加值,因此如果该球场有N条历史赛事记录,你就会看到N次输出,只有最后一次输出的是当前正确的总收益,前面的都是未完成累加的中间值,自然和预期金额不符。
  • 逻辑顺序不符合需求设计:需求要求所有赛事数据录入完成后再执行查询操作,但你当前把查询逻辑嵌在了新增赛事的分支中,每次新增完一场赛事就会触发一次查询;且循环开头直接先执行add操作,首次循环如果name和rev没有初始化,还会存入无效的脏数据。
修复建议
  1. 拆分数据录入和查询逻辑:先完成所有赛事数据的录入,确认所有数据都正确存入stadiumNames和gameRevenue两个LinkedList后,再单独开发查询功能。
  2. 累加总收益时单独声明临时变量,不要修改存储单场收入的rev变量,参考代码如下:
// 球场总收益查询示例
Scanner scan = new Scanner(System.in);
System.out.println("请输入要查询的球场名称:");
String targetStadium = scan.next();
double totalRevenue = 0.0;
for (int i = 0; i < stadiumNames.size(); i++) {
    if (stadiumNames.get(i).equals(targetStadium)) {
        totalRevenue += gameRevenue.get(i);
    }
}
System.out.println(targetStadium + " 所有赛事总收益为:" + totalRevenue);
  1. 调整录入逻辑的执行顺序:先读取用户输入的球场名和单场收入,再将两条数据对应存入两个LinkedList,避免先存后读导致的脏数据问题。

内容的提问来源于stack exchange,提问作者Christopher Prinze

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 03:06:04