【问题标题】:Error while creating object using parameterized constructor in Java在 Java 中使用参数化构造函数创建对象时出错
【发布时间】:2018-04-06 02:12:17
【问题描述】:

在创建对象和参数化构造函数时出现以下错误。

Main.java:6: 错误:Cipher 类中的构造函数 Cipher 不能 应用于给定类型

Cipher cy = new Cipher(k);              ^

必填:无参数

找到:int

原因:实际参数列表和形式参数列表的长度不同

这是我的文件的样子

<b>Main.java</b>

public class Main {
    public static void main(String []args){
   int k=8;
      Cipher cy = new Cipher(k);
      String encrypted_msg = cy.encrypt(message);
      String decrypted_msg = cy.decrypt(encrypted_msg);
      view1.displayResult("Decrypted message: "+decrypted_msg);
        }
    }

<b>Cipher.java</b>

import java.util.*;
public class Cipher
    {
    private int key;
    // Constructor 
    public void Cipher(int k)
        {
        key = k; 
        }// end Constructor 

    } // end class 

【问题讨论】:

    标签: java class oop object


    【解决方案1】:

    改变

    public void Cipher(int k)
    

    到

    public Cipher(int k)
    

    返回类型为void,它不是构造函数。在 Java 中,构造函数不指定返回类型。返回类型只是类的名称。

    所以在你的例子中,因为你没有定义构造函数,Java 将提供一个默认的无参数构造函数,格式如下:

    public Cipher() {}
    

    因此错误消息告诉您只存在一个无参数构造函数,但您正在调用一个需要 int 参数的构造函数。

    【讨论】:

    • 谢谢。它确实工作得很好。我不是 Java 的常客。但这看起来很有趣。 Java 是一项工作。再次感谢。
    【解决方案2】:
    <b>Cipher.java</b>
    
    import java.util.*;
    public class Cipher
        {
        private int key;
        public Cipher(int k) //remove the void
            {
            this.key = k; //use this for object level reference
            } 
    
        }
    

    【讨论】:

    • 请添加一些文字,说明您的帖子如何回答问题,以及原作者可以做什么。谢谢。
    • 感谢您的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-30
    • 1970-01-01
    • 1970-01-01
    • 2017-02-23
    • 2019-07-28
    • 1970-01-01
    相关资源
    最近更新 更多