【问题标题】:My code doesn't work right? IF-statement multiple classes我的代码不能正常工作? IF 语句多类
【发布时间】:2014-11-09 00:25:08
【问题描述】:

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

【问题讨论】:

    标签: java class if-statement


    【解决方案1】:

    您需要先致电setMaxSize,然后才能将球员加入球队。

    【讨论】:

    • 当然,我根本没有为某些构造函数设置值(根据练习说明),你不能真正低于零。谢谢你的帮助,伙计!
    【解决方案2】:

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

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

    【讨论】:

    • 本练习是在线课程的一部分,您可以发送准备好的程序进行自动检查;如果程序通过测试,您将获得积分以解锁更多编程练习。在创建 getter 和 setter 方面,我支持你(其中一个主题已完全涵盖),但添加额外的 getter 不会让我通过这个特定的练习。
    猜你喜欢
    • 2011-03-14
    • 1970-01-01
    • 2017-11-25
    • 1970-01-01
    • 2021-01-14
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    相关资源
    最近更新 更多