“实际或正式的参数列表长度不同”

当我尝试在Friends f = new Friends(friendsName, friendsAge);的()括号中放置一些东西时Friends f = new Friends(friendsName, friendsAge); 它出现了错误:

类中的构造函数朋友不能通过应用于给定的类型。 必需:没有参数。 找到:String,int。 原因:实际或正式的参数列表长度不同。

但是当我取出参数时,我的朋友列表只显示“null 0”。 即使我有String friendsName = input.next();也没有设置值String friendsName = input.next();

此外,当我尝试删除朋友时,它不会做任何事情。 在源代码中它确实会发出警告,

对util.java.Collection.remove的可疑调用:给定对象不能包含给定的String实例(期望的Friends)。

我对这一切意味着什么感到困惑?

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

您尝试实例化Friends类的对象,如下所示:

 Friends f = new Friends(friendsName, friendsAge); 

该类没有带参数的构造函数。 您应该添加构造函数,或者使用确实存在的构造函数创建对象,然后使用set-methods。 例如,而不是上述:

 Friends f = new Friends(); f.setName(friendsName); f.setAge(friendsAge); 

默认构造函数没有参数。 您需要指定一个custructor:

 public Friends( String firstName, String age) { ... }