Java 我的代码没有';你的工作不正常吗?IF语句包含多个类

Java 我的代码没有';你的工作不正常吗?IF语句包含多个类,java,class,if-statement,Java,Class,If Statement,我对Java比较陌生,作为一名新手,我很难理解代码是如何工作或执行的。大多数情况下,我在一两分钟内就找到了答案,有时是一两个小时。然而,我已经被困了两天了,恐怕我自己解决不了这个问题 我目前正在进行的编程练习几乎完成了,除了一点工作不正常外:方法setMaxSize似乎没有按它应该的方式工作。我试图编辑addPlayer方法,以对团队的最大规模和当前规模进行IF声明。但是,该方法不会将球员添加到列表中,而不管团队列表目前是否为空。我做错了什么?我的错在哪里?在检查团队中可能的最大玩家数量时,如何

我对Java比较陌生,作为一名新手,我很难理解代码是如何工作或执行的。大多数情况下,我在一两分钟内就找到了答案,有时是一两个小时。然而,我已经被困了两天了,恐怕我自己解决不了这个问题

我目前正在进行的编程练习几乎完成了,除了一点工作不正常外:方法setMaxSize似乎没有按它应该的方式工作。我试图编辑addPlayer方法,以对团队的最大规模和当前规模进行IF声明。但是,该方法不会将球员添加到列表中,而不管团队列表目前是否为空。我做错了什么?我的错在哪里?在检查团队中可能的最大玩家数量时,如何让addPlayer中的IF语句接受空列表中的新玩家

我很感激能得到的任何反馈,如果这是一个不切实际的问题,我向你道歉,但我真的没有耐心了。而且,这不是家庭作业:这是我在一个大学网站上找到的一个编程练习,但我很难完成

我包括两个类文件和主字段

import java.util.ArrayList;

public class Team {
private String name;
private ArrayList<Player> list = new ArrayList<Player>();
private int maxSize;

public Team (String name){
    this.name = name;
}

public String getName(){
    return this.name;
}

public void addPlayer(Player player){
    if (list.size() <= this.maxSize){
        this.list.add(new Player(player.getName(), player.goals()));
    }
}

public void printPlayers(){
    for (Player player : list){
        System.out.println(player.toString());
    }
}

public void setMaxSize(int maxSize){
    this.maxSize = maxSize;
}

public int size(){
    return this.list.size();
}

public int goals(){
    int goalSum = 0;
    for (Player player : list){
        goalSum+=player.goals();
    }
    return goalSum;
}
}

public class Main {
public static void main(String[] args) {
    Team barcelona = new Team("FC Barcelona");

    Player brian = new Player("Brian");
    Player pekka = new Player("Pekka", 39);
    barcelona.addPlayer(brian);
    barcelona.addPlayer(pekka);
    barcelona.addPlayer(new Player("Mikael", 1));

    System.out.println("Total goals: " + barcelona.goals());
}
}

public class Player {
private String name;
private int goal;

public Player(String name){
    this.name = name;
}

public Player(String name, int goal){
    this.name = name;
    this.goal = goal;
}

public String getName(){
    return this.name;
}

public int goals(){
    return this.goal;
}

public String toString(){
    return "Player: " + this.name + ", goals " + this.goal;
}
}
import java.util.ArrayList;
公开课小组{
私有字符串名称;
private ArrayList list=new ArrayList();
私有int-maxSize;
公共团队(字符串名称){
this.name=名称;
}
公共字符串getName(){
返回此.name;
}
公共无效添加玩家(玩家){

如果(list.size()您需要在向球队添加球员之前调用
setMaxSize

正如您之前所说,您从未调用过setMaxSize,因此maxSize最初为0。此外,我建议为每个类中的所有数据字段设置setter和getter,并将每个字段设置为私有


例如,您有一个maxSize的setter,但没有getter。做一个而不是另一个没有多大意义,对吗?您可以创建更好的封装,并以这种方式更容易地允许将来更改代码,而且对于将来的项目来说,这是更好的实践。

当然,我根本没有为一些构造函数设置值(根据练习说明),你不能真的低于零。谢谢你的帮助,伙计!这个练习是在线课程的一部分,你可以发送准备好的程序进行自动检查;如果程序通过测试,你就可以获得积分来解锁更多的编程练习。我支持你创建getter和setter(在其中一个主题中已经完全涵盖了这一点),但补充说额外的getter不允许我通过这个特定的练习。