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

Java使用带参构造方法创建Cipher对象时出现参数不匹配错误

搞定构造方法参数不匹配的错误

兄弟,这个错误原因其实一目了然——你在Main里想用int类型的密钥k来实例化Cipher对象,但你的Cipher类压根没定义接受int参数的构造方法!编译器翻遍Cipher类,只找到无参的Cipher()构造方法,自然会报错说参数列表对不上。

两步解决问题:

1. 给Cipher类加个带参构造方法

你需要在Cipher类里新增一个能接收int参数的构造方法,顺便把密钥存下来供加密解密用,示例代码如下:

public class Cipher {
    // 用来存储密钥的成员变量
    private int secretKey;

    // 新增带int参数的构造方法
    public Cipher(int key) {
        this.secretKey = key;
    }

    // 你的加密方法(示例实现,替换成你自己的逻辑)
    public String encrypt(String message) {
        StringBuilder result = new StringBuilder();
        for (char c : message.toCharArray()) {
            // 这里用密钥做加密操作,比如简单的位移
            result.append((char) (c + secretKey));
        }
        return result.toString();
    }

    // 记得补上解密方法(如果需要的话)
    public String decrypt(String encryptedMsg) {
        StringBuilder result = new StringBuilder();
        for (char c : encryptedMsg.toCharArray()) {
            result.append((char) (c - secretKey));
        }
        return result.toString();
    }
}

2. 补全Main类里的缺失代码

看你贴的Main.java代码,message变量还没定义呢,得先声明初始化它,不然编译也会报错:

public class Main {
    public static void main(String []args){
        int k=8;
        // 先定义要加密的消息
        String message = "这是要加密的内容!";
        Cipher cy = new Cipher(k);
        String encrypted_msg = cy.encrypt(message);
        String decrypted_msg = cy.decrypt(encrypted_msg);
        
        // 可以打印结果看看
        System.out.println("加密后:" + encrypted_msg);
        System.out.println("解密后:" + decrypted_msg);
    }
}

额外提醒一下

  • 构造方法的访问权限得是public(如果Cipher和Main不在同一个包的话),不然Main类没法调用它。
  • 如果之前你已经写过Cipher的构造方法,仔细检查参数类型是不是写错了(比如写成String而不是int),或者参数个数不对。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:17:25