[英]My code doesn't work right? IF-statement multiple classes
我對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;
}
}
您需要先致電setMaxSize
然后才能將玩家添加到團隊中。
如前所述,您永遠不會調用setMaxSize,因此maxSize最初為0。此外,我建議為每個類中的所有數據字段設置setter和getter,並將每個字段設為私有。
例如,您有一個maxSize的設置器,但沒有getter器。 一個做而不是另一個沒什么意義,對嗎? 您可以創建更好的封裝,並以這種方式更輕松地允許代碼的將來更改,並且對於將來的項目,這也是更好的做法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.