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

Java数组投票程序平局处理功能实现方案咨询

投票程序平局功能实现方案

实现思路

不需要专门定位数组中的重复值,按两步遍历即可完成需求:

  1. 第一轮遍历所有得票数,统计出全局最高得票数值
  2. 第二轮遍历所有候选人,筛选出得票数等于最高值的全部对象,即为并列最高的结果

注意:你原有代码存在两个会直接导致运行错误的问题,会在修正版中一并修复:

  • 第一个录入的候选人姓名、票数未存入对应数组,存在数据丢失
  • 存储最高票索引的变量kohta被错误赋值为得票数值而非数组下标,运行时会触发数组索引越界异常

修正后完整代码

import java.util.Scanner;
import java.util.ArrayList;

public class ArraysVoting {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("Enter the number of candidates:");
        int candidateCount = scanner.nextInt();
        
        int[] votes = new int[candidateCount];
        String[] candidates = new String[candidateCount];
        
        // 统一循环录入所有候选人信息,避免首个候选人数据丢失
        for (int i = 0; i < candidateCount; i++) {
            System.out.print("Enter candidate's name:");
            String name = scanner.next();
            candidates[i] = name;
            System.out.print("Enter " + candidates[i] + "'s votes:");
            votes[i] = scanner.nextInt();
        }

        // 第一步:查询全局最高得票数
        int maxVote = votes[0];
        for (int i = 1; i < votes.length; i++) {
            if (votes[i] > maxVote) {
                maxVote = votes[i];
            }
        }

        // 第二步:收集所有得票等于最高值的候选人
        ArrayList<String> topCandidates = new ArrayList<>();
        for (int i = 0; i < votes.length; i++) {
            if (votes[i] == maxVote) {
                topCandidates.add(candidates[i]);
            }
        }

        System.out.println();
        // 根据最高票人数输出对应结果
        if (topCandidates.size() == 1) {
            System.out.println(topCandidates.get(0) + " is the winner with " + maxVote + " votes!");
        } else {
            System.out.println("Tie! The following candidates all got the highest " + maxVote + " votes:");
            for (String candidate : topCandidates) {
                System.out.println("- " + candidate);
            }
        }
        
        scanner.close();
    }
}

逻辑说明

  • 录入阶段通过统一循环处理所有候选人,从根源上避免首个候选人数据丢失的问题
  • 第一轮遍历仅记录最高得票的数值,不需要提前绑定候选人索引,逻辑更简洁
  • 第二轮遍历直接比对得票与最高值,符合条件的候选人统一加入结果列表,天然支持2人及以上的平局场景,无需额外编写重复值检测逻辑
  • 最终根据结果列表的长度判断是单人胜出还是平局,输出对应提示文案即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 22:45:50