我的代码不能正常工作? IF语句多个类

时间:2014-11-09 00:25:09

标签: java class if-statement

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

2 个答案:

答案 0 :(得分:2)

在将球员添加到球队之前,您需要致电setMaxSize

答案 1 :(得分:0)

如前所述,您永远不会调用setMaxSize,因此maxSize最初为0.此外,我建议为每个类中的所有数据字段创建setter和getter,并将每个字段设为私有。

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