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

Java报错:UIManager的put无法适配(int)参数,Map使用问题求助

问题分析与修正方案

首先,咱们直接说报错的核心原因:你调用put(randomNum)的时候只传了一个参数,但Map的put方法必须传入两个参数——键(Key)和值(Value),编译器找不到只接受单个int的put方法,所以抛出了这个错误。

另外,你的逻辑还有两个小问题:

  • 你生成的randomNum是rand.nextInt(7)+1,只能得到1-7的数字,但你的colours里还有blue对应8,这会导致永远选不到蓝色;
  • 你直接把数字存入answer Map,但你的需求是存颜色,得把随机数字和colours里的颜色名关联起来才行。

修正后的代码方案(两种思路)

思路1:先建立数字到颜色的反向映射,再随机选

Random rand = new Random();
// 颜色名 -> 编号的映射
Map<String, Integer> colours = new HashMap<>();
{{
    put("red", 1);
    put("white", 2);
    put("purple", 3);
    put("orange", 4);
    put("pink", 5);
    put("yellow", 6);
    put("green", 7);
    put("blue", 8);
}};

// 先做一个编号 -> 颜色名的反向映射,方便根据随机数字找颜色
Map<Integer, String> numToColour = new HashMap<>();
for (Map.Entry<String, Integer> entry : colours.entrySet()) {
    numToColour.put(entry.getValue(), entry.getKey());
}

// 存储4个随机颜色的Map(这里用1-4作为键,颜色名作为值,你也可以根据需求调整键的类型)
Map<Integer, String> answer = new HashMap<>();
for (int i = 0; i < 4; i++) {
    // 生成1-8的随机数,覆盖所有颜色
    int randomNum = rand.nextInt(8) + 1;
    String randomColour = numToColour.get(randomNum);
    answer.put(i + 1, randomColour);
}

思路2:直接从颜色集合里随机选(更简洁)

如果不需要用到颜色的编号,直接从colours的键集合里随机抽取颜色更简单:

Random rand = new Random();
Map<String, Integer> colours = new HashMap<>();
{{
    put("red", 1);
    put("white", 2);
    put("purple", 3);
    put("orange", 4);
    put("pink", 5);
    put("yellow", 6);
    put("green", 7);
    put("blue", 8);
}};

// 把颜色名转成List,方便随机获取
List<String> colourList = new ArrayList<>(colours.keySet());
Map<Integer, String> answer = new HashMap<>();

for (int i = 0; i < 4; i++) {
    // 随机选一个颜色的索引
    int randomIndex = rand.nextInt(colourList.size());
    String randomColour = colourList.get(randomIndex);
    answer.put(i + 1, randomColour);
}

额外注意点

  • 如果你希望answer的结构不是“序号→颜色”,而是单纯存储4个允许重复的颜色,那可能你需要用List<String>来替代Map——因为Map的核心是键值对的映射,键是唯一的,重复存同个颜色会覆盖原有条目,用List来存重复元素会更贴合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:49:08