2016-01-09 2 views
1

Я делаю класс, который преобразует римские цифры в арабские числа, мой код соответствует штрафу, но когда я пытаюсь сделать класс клиента для его проверки, я получаю ошибку "constructor RomanNumerals в классе RomanNumerals нельзя применять к заданным типам; required: no arguments; found: int; reason: фактические и формальные списки аргументов различаются по длине ».Конструктор не может применяться к заданным типам, не требуется аргумент; найдено int?

Вот мой код, где я вызвать конструктор

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; 
    } 

ответ

1

Вы пытаетесь создать экземпляр RomanNumerals объекта с использованием перегруженного конструктора, который вы убежищем» t определено.

Это

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

является метод на самом деле, а не конструктор. Вам нужно определить конструктор следующим образом:

public RomanNumerals(int arabic){ 
    // Initialization 
} 
1

Это не конструктор:

public void RomanNumerals(int arabic) 

это метод, называемый RomanNumerals, который принимает int. Конструктор без аргументов является конструктором по умолчанию, созданным для вас Java.

Все, что вам нужно сделать, это удалить void, чтобы устранить проблему.

0

Это сообщение означает, что ожидаемый конструктор - RomanNumerals() без каких-либо арабов и что фактический конструктор RomanNumerals (int) не определен. Другими словами, формальный список аргументов пуст, но фактический список аргументов - это int.

конструктор RomanNumerals в классе RomanNumerals не может быть применен к данным типам; требуется: нет аргументов; найдено: int; причина: фактическая и формальные списки аргументов различаются по длине

Конструктор должен выглядеть следующим образом.

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

Обратите внимание, что нет возвратных выражений.

То, что вы определили как конструктор, действительно является методом из-за возвращаемого аргумента.

Смежные вопросы