"Фактический и формальный аргумент списки отличаются длиной"
Когда я пытаюсь поместить что-то в () скобки Friends f = new Friends(friendsName, friendsAge);
, это приводит к ошибке:
Конструктор Friends в классе Friends не может быть применен к заданным типам. Требуется: никаких аргументов. Найдено: String, int. Причина: фактическая или формальная списки аргументов различаются по длине.
Но когда я вынимаю аргументы, мой список друзей показывает только "null 0". Не установлены ли значения, даже если у меня есть String friendsName = input.next();
?
Кроме того, когда я пытаюсь удалить друга, это не помогает что-нибудь. В исходном коде он действительно вызывает предупреждение,
Подозрительный звонок в util.Ява.Коллекция.удалить: данный объект не может содержат заданные экземпляры строки (ожидаемые друзья).
Я не понимаю, что все это значит?
import java.util.ArrayList;
import java.util.Scanner;
public class Friends
{
public static void main( String[] args )
{
int menu;
int choice;
choice = 0;
Scanner input = new Scanner(System.in);
ArrayList< Friends > friendsList = new ArrayList< >();
System.out.println(" 1. Add a Friend ");
System.out.println(" 2. Remove a Friend ");
System.out.println(" 3. Display All Friends ");
System.out.println(" 4. Exit ");
menu = input.nextInt();
while(menu != 4)
{
switch(menu)
{
case 1:
while(choice != 2)
{
System.out.println("Enter Friend's Name: ");
String friendsName = input.next();
System.out.println("Enter Friend's Age: ");
int friendsAge = input.nextInt();
Friends f = new Friends(friendsName, friendsAge);
friendsList.add(f);
System.out.println("Enter another? 1: Yes, 2: No");
choice = input.nextInt();
} break;
case 2:
System.out.println("Enter Friend's Name to Remove: ");
friendsList.remove(input.next());
break;
case 3:
for(int i = 0; i < friendsList.size(); i++)
{
System.out.println(friendsList.get(i).name + " " + friendsList.get(i).age);
} break;
}
System.out.println(" 1. Add a Friend ");
System.out.println(" 2. Remove a Friend ");
System.out.println(" 3. Display All Friends ");
System.out.println(" 4. Exit ");
menu = input.nextInt();
}
System.out.println("Thank you and goodbye!");
}
public String name;
public int age;
public void setName( String friendsName )
{
name = friendsName;
}
public void setAge( int friendsAge )
{
age = friendsAge;
}
public String getName()
{
return name;
}
public int getAge()
{
return age;
}
}
2 ответа:
Вы пытаетесь создать экземпляр объекта класса
Friends
следующим образом:Friends f = new Friends(friendsName, friendsAge);
Класс не имеет конструктора, который принимает параметры. Вы должны либо добавить конструктор, либо создать объект с помощью конструктора, который существует, а затем использовать set-методы. Например, вместо приведенного выше:
Friends f = new Friends(); f.setName(friendsName); f.setAge(friendsAge);