Фактические и формальные списки аргументов отличаются длиной 1 ошибка

#java

#java

Вопрос:

Фактические и формальные списки аргументов отличаются длиной 1 ошибка и не могут решить эту проблему. Что происходит не так? Я хочу получить 3 числа от пользователя, а затем упорядочить их в порядке от наименьшего к наибольшему числу.Может кто-нибудь, пожалуйста, объясните мне? У меня есть один код ошибки:

 (ThreeNumbers.java:14: error: constructor ThreeNumbers in class ThreeNumbers cannot be applied to given types;

    ThreeNumbers X = new ThreeNumbers(n1, n2, n3);
                   ^
  
required: no arguments
  found: int,int,int
  reason: actual and formal argument lists differ in length
1 error
)
  

Вот код:

 
    import java.util.Scanner;
    
    public class ThreeNumbers 
    { 
    
    Scanner Y = new Scanner(System.in);
     
     int n1 = Y.nextInt();
    
     int n2 = Y.nextInt();
    
     int n3 = Y.nextInt();
     
    
    public int main(String [] args)
     {
      
    ThreeNumbers X = new ThreeNumbers(n1, n2, n3);
    
        if (n1 > n2) {
        return n1;
        return n2;
        }
        else {
        return n2;
        return n1;
            };
        
         if (n2 > n3) {
        return n2;
        return n3;
        }
        else {
        return n3;
        return n2;
        };
        
         if (n1 > n3) {
        return n1;
        return n3;
        } 
        else {
        return n3;
        return n1;
        };
    
          System.out.println (X);
    };
    };

  

Ответ №1:

В вашем коде вы не определили никаких конструкторов, поэтому будет доступен только конструктор по умолчанию, отличный от args.

Также

 Scanner Y = new Scanner(System.in);
int n1 = Y.nextInt();
int n2 = Y.nextInt();
int n3 = Y.nextInt();
  

должен быть в блоке кода, попробуйте переместить его в свой main метод.

Обратите внимание, когда этот код находится в вашем main методе, вы заметите, что вам даже не нужен никакой другой конструктор.

Редактировать

После ваших конечных фигурных скобок не должно быть точек с запятой.

Ответ №2:

Помимо проблемы, упомянутой другими пользователями, есть еще одна проблема

   if (n1 > n2) {
        return n1;
        return n2;
        }
  

После return n1 этого следующий оператор недоступен, и у вас должна возникнуть проблема со временем компиляции. Не уверен, что вы используете какой-либо компилятор или командную строку.

Ответ №3:

Класс ThreeNumbers не определяет конструктор с 3 аргументами int. Существует только неявный конструктор без аргументов. Таким образом, вы могли бы создать новый экземпляр с new ThreeNumbers() помощью, но не с new ThreeNumbers(n1, n2, n3) помощью .

Кроме того, зачем вам вообще нужно создавать экземпляр этого класса? И, кстати, основной метод должен быть объявлен с public static void main(String [] args)

Для получения еще нескольких проблем в коде см. Также Другие ответы.