本教程讲解如何优化投票统计程序,使其仅在某一名次(如第二、
第三)实际存在非零得票时才输出对应结果,避免显示“third: ”等空行。核心思路是先判断票数是否为零,再决定是否执行查找与打印逻辑。
在当前投票程序中,firstScore、secondScore 和 thirdScore 已通过排序或比较逻辑确定,但无论其值是否为 0,程序都会无条件打印对应名次标题(如 "Third: "),导致输出冗余甚至误导(例如 Third: 后无任何候选人)。解决的关键在于:将打印标题与遍历查找逻辑整体封装在条件判断中,仅当该名次票数 > 0 时才执行。
以下是优化后的完整代码片段(基于您原有的结构):
// 仅当第一名有有效票数时显示 Winner
if (firstScore > 0) {
System.out.print("Winner: ");
for (int i = 0; i < Array.length; i++) {
if (Array[i] != 0 && Array[i] == firstScore) {
System.out.print(stringArray[i] + " ");
}
}
System.out.println(); // 使用 println() 自动换行,更简洁
}
// 仅当第二名有有效票数时显示 Second
if (secondScore > 0) {
System.out.print("Second: ");
for (int i = 0; i < Array.length; i++) {
if (Array[i] != 0 && Array[i] == secondScore) {
System.out.print(stringArray[i] + " ");
}
}
System.out.println();
}
// 仅当第三名有有效票数时显示 Third
if (thirdScore > 0) {
System.out.print("Third: ");
for (int i = 0; i < Array.length; i++) {
if (Array[i] != 0 && Array[i] == thirdScore) {
System.out.print(stringArray[i] + " ");
}
}
System.out.println();
}✅ 关键改进说明:
⚠️ 注意事项:
通过这一优化,程序输出将严格反映真实投票结果——得票为 0 的名次完全静默,界面更专业,用户体验更清晰。