Java 从阵列中添加和删除

Java 从阵列中添加和删除,java,Java,我试图通过我的主类测试我的Club方法,但是我在试图找出如何添加/删除到我的类时遇到了困难。我相信这可能与我的成员类中的默认构造函数有关 抱歉,我还是个初学者 公共班机{ public static void main(String[] args) { Member defaultMember = new Member(); Member member = new Member("John","Smith", 2, 1990);

我试图通过我的主类测试我的Club方法,但是我在试图找出如何添加/删除到我的类时遇到了困难。我相信这可能与我的成员类中的默认构造函数有关

抱歉,我还是个初学者

公共班机{

public static void main(String[] args) {

    Member defaultMember = new Member();
    Member member = new Member("John","Smith", 2, 1990);
    Club club = new Club();


}
}

公共班级俱乐部{

private Member[] members;


public Club() {

    members = new Member[5];
}

public void join(Member member) {
    for(int i=0; i<members.length; i++) {
        if(members[i] == null) {
            members[i] = new Member();
        } else {
            System.out.println("No room");
        }
    }
}

public int numberOfMembers() {
    return members.length;
}

public void showMembers() {
    for(int i=0; i<members.length; i++) {
        System.out.println(members[i]);
    }
}

public void showMembersByYear(int year) {
    for(int i=0; i<members.length; i++) {
        if(year == members[i].getJoinYear()) {
            System.out.println(members[i]);
        }
    }
}

public void removeMembersByYear(int year) {
    for(int i=0; i<members.length; i++) {
        if(year == members[i].getJoinYear()) {

        }
    }
}
私人会员[]名会员;
公共俱乐部(){
成员=新成员[5];
}
公共无效加入(成员){

对于(int i=0;i,代码中存在多个问题

 if(members[i] == null) {
      members[i] = new Member();
  } 
在这里,您将为数组指定一个新成员对象,而不是作为参数发送的对象

将其更改为
member[i]=member;

您的join函数中存在一个逻辑问题,最初数组的所有元素都将为null,因此循环将在第一次调用时将成员对象分配给所有可用空间,之后您将没有空间

你的numberOfMembers()函数也有一个逻辑问题,它总是打印5,因为它是你在创建成员数组时给出的大小

此外,showMembers函数将打印对对象的引用,而不是其中存储的信息

您可以在此处阅读有关打印对象的信息:

编辑-用于连接逻辑问题

public static void main(String[] args) {

    Member defaultMember = new Member();
    Member member = new Member("John","Smith", 2, 1990);
    Club club = new Club();
    club.join(member);
    club.showMembers();

}
上面的主函数将打印(考虑到showMembers()工作正常)

原因是您已将同一成员分配给所有可用空间。现在如果您尝试这样做

Member secondMember = new Member("ali","tahir","2","1990")
club.join(secondMember)
您将无法获得
房间


因此,您向俱乐部添加新会员的方法在逻辑上是错误的

您是否需要使用Array,而不允许使用ArrayList或其他集合?
members=new member[5]如果您不想在每次添加或删除一个成员时用一个更大或更小的数组来重新分配<代码>成员<代码>,则删除该成员中的一个空索引。考虑使用“<代码>集合> <代码>,或者像<代码> >代码> >代码> >代码> >“这方面的评级?”在您的联接函数中有一个逻辑问题,最初数组的所有元素都将为null,因此循环将在第一次调用时将成员对象分配给所有可用空间,之后您将没有空间。“我理解数组默认为null值,但您所指的是什么?”之后的第一个电话你就没有房间了"我在编辑中对这个问题做了一些阐述。我明白你的意思了。for循环正在添加我的第一个对象,并用相同的对象填充数组。我不知道如何将特定数组索引隔离到每个新成员对象。如果你是自学,你需要指南,而且似乎你需要练习数组问题。请尝试黑客等级或leet代码。如果您不受使用简单数组的限制,请考虑使用其他数据结构,这也有助于降低时间复杂性。您还可以阅读“21天自学Java”以更好地理解。如果您仍在努力,请就您迄今为止尝试的解决方案提出另一个问题。
John Smith 2 1990
John Smith 2 1990
John Smith 2 1990
John Smith 2 1990
John Smith 2 1990
Member secondMember = new Member("ali","tahir","2","1990")
club.join(secondMember)