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

HashMap反转方法调用报错求助:参数不匹配问题

问题分析与修复方案

核心错误点

  1. 参数缺失:reverse(Map<Integer,String>)方法必须接收一个Map<Integer,String>类型的参数,但你在main中调用reverse()时没有传入任何参数,这是报错的直接原因。
  2. 静态方法调用限制:main是静态方法,无法直接调用非静态的reverse方法,要么将reverse改为静态方法,要么创建test类的实例后再调用。
  3. 逻辑偏离需求:你在reverse方法里手动添加了固定键值对,这不符合“反转输入HashMap”的目标,应该基于传入的原始Map生成反转结果。
  4. 拼写错误:System.out.println里的Reversered应为Reversed。

修复后的完整代码

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

public class test {

    public static void main(String[] args) {
        // 先创建一个待反转的原始Map
        Map<Integer, String> originalMap = new HashMap<>();
        originalMap.put(18, "Eighteen");
        originalMap.put(50, "Fifty");
        originalMap.put(132, "OneThreeTwo");
        originalMap.put(8, "Ocho");
        originalMap.put(41, "Forty-one");
        
        // 调用静态的reverse方法,传入原始Map
        Map<String, Integer> reversedMap = reverse(originalMap);
        System.out.println("反转后的Map: " + reversedMap);
    }

    // 将reverse改为静态方法,方便main直接调用
    public static Map<String, Integer> reverse(Map<Integer, String> map) {
        HashMap<String, Integer> reversed = new HashMap<>();
        
        // 遍历原始Map,实现键值反转
        for (int key : map.keySet()) {
            String value = map.get(key);
            // 避免重复值覆盖,这里保留第一个遇到的键(如果有重复值的话)
            if (!reversed.containsKey(value)) {
                reversed.put(value, key);
            }
        }
        return reversed;
    }
}

说明

  • 先创建了原始的Map<Integer,String>作为输入,符合反转需求的前置条件。
  • 将reverse改为静态方法,让静态的main可以直接调用。
  • 移除了硬编码的键值对,改为遍历传入的原始Map生成反转结果。
  • 修复了拼写错误,同时优化了输出信息的可读性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 06:05:05