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

Java中如何获取并显示数值最高的对应变量名称

问题原因

Java运行时无法获取基本类型变量的变量名信息,你直接将三个int类型的得票数值放入集合取最大值,最终只能拿到数值结果,无法关联到对应的候选人标识。

解决方案

方案1:使用Map存储候选人与得票的映射(最推荐)

通过键值对直接绑定候选人名称和对应得票数,遍历取最大值即可:

import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

// 构建候选人-得票数映射
Map<String, Integer> voteMap = new HashMap<>();
voteMap.put("candidate1", candidate1);
voteMap.put("candidate2", candidate2);
voteMap.put("candidate3", candidate3);

// 取获得最高票数的条目
Map.Entry<String, Integer> maxEntry = Collections.max(voteMap.entrySet(), Map.Entry.comparingByValue());

System.out.println("获胜的候选人是:" + maxEntry.getKey());

方案2:自定义实体类/Record封装数据

如果后续还有其他候选人相关的属性需要扩展,可以用类封装信息:

import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

// JDK16及以上可以用Record简化定义
record Candidate(String name, int votes) {}

public class VoteTest {
    public static void main(String[] args) {
        int candidate1 = 10, candidate2 = 25, candidate3 = 17;
        List<Candidate> candidateList = Arrays.asList(
                new Candidate("candidate1", candidate1),
                new Candidate("candidate2", candidate2),
                new Candidate("candidate3", candidate3)
        );
        // 按得票数排序取最大值
        Candidate winner = Collections.max(candidateList, Comparator.comparingInt(Candidate::votes));
        System.out.println("获胜的候选人是:" + winner.name());
    }
}

方案3:极简判断适配(仅适合固定少量候选人的场景)

如果不想改动现有代码结构,候选人数量固定且很少,也可以直接加判断分支:

int largest = Collections.max(Arrays.asList(candidate1, candidate2, candidate3));
String winnerName;
if (largest == candidate1) {
    winnerName = "candidate1";
} else if (largest == candidate2) {
    winnerName = "candidate2";
} else {
    winnerName = "candidate3";
}
System.out.println("获胜的候选人是:" + winnerName + "!");

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 22:45:04