java - Arraylist不添加java

标签 java

我正在做一个简单的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 。因此循环内的代码将不会被执行,并且好友永远不会添加到列表中。

我怀疑你想做这样的事情:(因为这看起来像家庭作业,我只会给你伪代码)

  1. 此人已经是 friend 了吗
    • 是 - 无需执行任何操作或提供反馈和返回
    • 否 - 继续
  2. 他们是否已达到好友上限
    • 是 - 显示反馈并返回
    • 否 - 继续
  3. 添加好友

关于java - Arraylist不添加java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38908510/

相关文章:

java - 如何将文件 bundle 到应用程序中?

java - 读取分块响应

java - 分配舞台视口(viewport)?

java - 在批量执行中提取聚合器值

java - 将 java 纪元字符串与 php 纪元日期进行比较

java - Android HTTPUrlConnection 错误

java - 修改 Activity 的 AWS 联合用户策略/联合 token (AWSJavaSDK)

java - 桌面应用程序层

java - Android:将标准 XML 转换为 Android 二进制 XML 格式 (AXML)

java - 3 Android Threads,如何构造