将Pascal代码转Dart时循环累加失效,求解决建议
Dart分数累加问题修复方案
问题根源
- 变量遮蔽:在
for循环内部,你重新声明了pscore1和Totscore1变量,这会创建仅在循环内生效的局部变量,完全和外层的总分变量无关,导致外层的Totscore1始终保持初始值0。 - 缺少第二支队伍的分数累加逻辑。
修正后的代码
import "dart:io"; void main() { // 初始化两支队伍的总分 double totScore1 = 0; double totScore2 = 0; // 获取队伍名称 print('Enter team 1 name'); String? teamOneName = stdin.readLineSync(); print('Enter team 2 name'); String? teamTwoName = stdin.readLineSync(); // 累加队伍1的5个球员分数 for (int i = 0; i < 5; i++) { print('Enter team 1 player ${i+1} score'); // 直接读取输入并累加到总分,无需额外局部变量 totScore1 += double.parse(stdin.readLineSync()!); } // 累加队伍2的5个球员分数 for (int i = 0; i < 5; i++) { print('Enter team 2 player ${i+1} score'); totScore2 += double.parse(stdin.readLineSync()!); } // 输出结果 print('${teamOneName ?? "Team 1"} total score: $totScore1'); print('${teamTwoName ?? "Team 2"} total score: $totScore2'); }
关键修改说明
- 移除循环内的变量声明,直接使用外层的总分变量进行累加操作(用
+=简化代码) - 添加了第二支队伍的分数输入和累加逻辑
- 优化了提示文本,明确显示当前输入的是第几个球员的分数
- 处理了队伍名称为null的情况(使用
??提供默认值)
内容的提问来源于stack exchange,提问作者Clint Walker
相关产品推荐
相关产品推荐

