构造函数不能应用于给定的类型,不需要参数;发现int?

时间:2016-01-09 17:53:57

标签: java constructor bluej

我正在创建一个将罗马数字转换为阿拉伯数字的类,我的代码很好但是当我尝试创建一个客户端类来测试它时我得到了错误 “类RomanNumerals中的构造函数RomanNumerals不能应用于给定类型;必需:无参数; found:int; reason:实际和形式参数列表的长度不同”。

这是我的代码,我调用构造函数

public class RomanConverter {

   public static void main(String[] args) {

      TextIO.putln("Enter a Roman numeral and this will change it to an");
      TextIO.putln("arabic integer.  Enter an integer.")

      while (true) {

         TextIO.putln();
         TextIO.put("? ");


         while (TextIO.peek() == ' ' || TextIO.peek() == '\t')
            TextIO.getAnyChar();
         if ( TextIO.peek() == '\n' )
            break;


         if ( Character.isDigit(TextIO.peek()) ) {
            int arab = TextIO.getlnInt();
            try {
                RomanNumerals N = new RomanNumerals(arab);
                TextIO.putln(N.toInt() + " = " + N.toString());
            }

这是构造函数

 public void RomanNumerals(int arabic){
        num = arabic;
    }

3 个答案:

答案 0 :(得分:1)

您正尝试使用尚未定义的重载构造函数来实例化RomanNumerals对象。

public void RomanNumerals(int arabic){
    num = arabic;
}

实际上是一种方法,而不是构造函数。您需要以这种方式定义构造函数:

public RomanNumerals(int arabic){
    // Initialization
}

答案 1 :(得分:1)

这不是构造函数:

public void RomanNumerals(int arabic)

这是一个名为RomanNumerals的方法,需要int。无参数构造函数是Java为您创建的默认构造函数。

您需要做的就是删除void以解决问题。

答案 2 :(得分:0)

此消息表示期望的构造函数是RomanNumerals(),没有任何aruments,并且未定义实际构造函数RomanNumerals(int)。换句话说,形式参数列表为空,但实际参数列表为int。

  

类RomanNumerals中的构造函数RomanNumerals无法应用于   给定类型;要求:没有参数;发现:int;原因:实际和   形式参数列表的长度不同

构造函数应该如下所示。

public class MyClass {
  public MyClass(int x, double y) {
    ...
  }
}

请注意,没有退货证明。

由于返回参数,您已确定为构造函数的方法实际上是一种方法。