#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)
Для получения еще нескольких проблем в коде см. Также Другие ответы.