我是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;
}
}
答案 0 :(得分:2)
在将球员添加到球队之前,您需要致电setMaxSize
。
答案 1 :(得分:0)
如前所述,您永远不会调用setMaxSize,因此maxSize最初为0.此外,我建议为每个类中的所有数据字段创建setter和getter,并将每个字段设为私有。
例如,你有一个maxSize的setter,但不是getter。做一个而不是另一个没有多大意义,对吧?您可以通过这种方式创建更好的封装并允许将来更改代码,对于未来的项目,这也是更好的实践。