我正在做一个简单的sch程序来添加 friend ,即将对象添加到数组列表中。我遵循了一切,但我的方法 befriend() 似乎不起作用。 当我在 main 中使用 .add() 手动测试时,它有效。我哪里做错了?
import java.util.*;
public class NetworkFriends {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
Person me = new Person("Aloysius", 1);
ArrayList<Person> myList = new ArrayList<Person>(Arrays.asList(me.getFriendList()));
Person p1 = new Person("Gorgon", 2);
Person p2 = new Person("Eddy", 3);
me.befriend(p1);
for(Person i : myList) {
System.out.println("Name: " + i.getName());
}
}
}
class Person
{
private int id;
private String name;
private ArrayList<Person> friendList;
private static int runningNum = 0;
private static int friendsLimit = 5;
private String degree;
private int degreeNum;
/* Constructor - 1 param */
public Person(String name, int degreeNum)
{
//Implement your code here..
//Initialize all necessary variable(s)
this.name = name;
friendList = new ArrayList<Person>(5);
this.degree = degree;
this.degreeNum = degreeNum;
}
public void befriend(Person p){
//Implement your code here..
ArrayList<Person> anotherList = new ArrayList<Person>(Arrays.asList(p.getFriendList()));
for(Person i : friendList) {
if(!isFriend(this) && friendList.size() < 5) {
friendList.add(p);
anotherList.add(this);
}
else if(!isFriend(this) && friendList.size() == 5) {
System.out.println("Friends limit reached");
}
else {
System.out.println("Already in friend list");
}
}
}
}
public boolean isFriend(Person p){
//Implement your code here..
boolean isItAFriend = true;
for(Person i : friendList) {
if(friendList.contains(p)) {
isItAFriend = true;
}
else {
isItAFriend = false;
}
}
return isItAFriend;
}
最佳答案
问题出在您的 befriend 方法中的 foreach
循环上。您正在使用构造函数创建一个新的 Person
,该构造函数创建一个初始大小为 5 的空好友列表,但仍然是空的。
在您的 befriend
方法中,您将循环查找此空列表中的每个 friend 。因此循环内的代码将不会被执行,并且好友永远不会添加到列表中。
我怀疑你想做这样的事情:(因为这看起来像家庭作业,我只会给你伪代码)
- 此人已经是 friend 了吗
- 是 - 无需执行任何操作或提供反馈和返回
- 否 - 继续
- 他们是否已达到好友上限
- 是 - 显示反馈并返回
- 否 - 继续
- 添加好友
关于java - Arraylist不添加java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38908510/