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
相关产品推荐
相关产品推荐

