一般问题+如何:可以复制另一个对象的值的对象?

时间:2015-05-12 20:40:21

标签: java class object methods

一般部分第一:

这是我的Java 1决赛:我需要制作一个NFL季后赛模拟器。所以,我会成为一个" Team"保存" Offense"的值的对象等等。我需要一种方法来保存算法来计算谁赢得每场比赛。但是,我不知道如何将该方法应用于相应的团队。

我打算制作另一个名为" Matchup"这将支持2" Team"对象,然后比较两个团队'算法方法的值。但是,根据我的知识,我不认为你可以在另一个对象中使用对象......因此,我一直试图以丑陋的方式对所有内容进行硬编码。

有人会指出我正在制定这样一个计划的方向吗?

无论如何,关于我的直接问题:

到目前为止,这是我的一小段代码..

public class Final_Larrabee {
    static Team pit = new Team("Steelers", "AFC", 3, 75, 70);
    static Team bal = new Team("Ravens", "AFC", 6, 70, 80);
    static String teamA1 = "bal";

    public static void main(String[] args) {    
        System.out.println(+teamA1.seed);
    }
}

我的另一堂课:

package final_larrabee;

public class Team {

    String name;
    String conference;     
    int seed;
    int offense;     
    int defense;        
    boolean wcWin;
    boolean divWin;        
    boolean conWin;        
    boolean alive;        

    public Team(String n, String c, int s, int o, int d) {    
        name = n; 
        conference = c;
        seed = s;
        offense = o;
        defense = d;
        wcWin = false; // these wins will be used in the betting part
        divWin = false;
        conWin = false;
        alive = true; // determines if team is out of playoffs or not
    }

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

    public void setName(String n){
        name = n;
    }

    public int getConference(){
        return this.seed;
    }

    public void setConference(String c){
        conference = c;
    }

    public int getSeed(){
        return this.seed;
    }

    public void setSeed(int s){
        seed = s;
    }

    public int getOffense(){
        return this.offense;
    }

    public void setOffense(int o){
        offense = o;
    }

    public int getDefense(){
        return this.defense;
    }

    public void setDefense(int d){
        defense = d;
    }
}

我意识到这不会奏效,因为它试图获取teanA1的种子价值(当然并不存在)。但是,我想要的只是简单地调用bal.seed值。我想这样做,以便以后我可以在给定的比赛中为2支球队使用teamA1和teamA2变量。有没有办法这样做?

如果没有,或许理想情况下,最好创建一个名为teamA1的Team对象,它保存当时我需要的任何团队的值。它需要像变量一样改变,而不是每次需要时都会生成一百万个对象(理想情况下......)我找到了方法' clone'但我不确定这是我想要的吗?

任何帮助,无论是我的直接问题,还是我的程序的总体布局,都将非常感激。谢谢!

2 个答案:

答案 0 :(得分:2)

使团队实现可比较,这将使您能够编写compareTo方法,然后您可以基于赢取条件

答案 1 :(得分:1)

正如您的类Final_Larrabee在您的代码中拥有2个团队对象一样,您的对等类也可以容纳其他对象。

是的,您正在创建一个包含团队对象实例的匹配类的想法。

在主类中,您可以初始化2个团队对象。然后我会创建一个matchup对象,它会传递你之前创建的2个团队对象并执行一些功能。

在团队课程中,您可以实施一种方法,该方法根据团队统计数据返回分数。例如,它可以计算进攻*防御*种子或类似的东西然后返回它然后在你的匹配类中,你可以实现一个方法,如playGame()调用每个对象的getScore()方法并比较值然后返回获胜者(或者为了简单起见将其打印出来)。

关于您的代码,您使用的是关键字 static 。 Static是一个关键字,它将变量/对象/方法更改为类变量/ object / method。这意味着该类的每个实例都共享此变量。我不会用它来创建团队。如果出于某种原因需要跟踪您创建的团队对象的数量,那么使用静态(一个非常基本的示例)的示例将是一个例子。您可以在团队对象中实现静态COUNT变量,并在每次调用构造函数时将其增加1。这也可以用于为团队分配ID。

static int TEAM_COUNT = 0;

public Team()
{
   this.id = ++TEAM_COUNT;
}

这将使TEAM_COUNT成为类团队的所有实例共享的值。如果你打电话

teamA.setTeamCount(0); 

然后Team的每个其他实例也将重置为0.

编辑:关于你的季后赛

public static void main(String args[])
{
    Team team1 = new Team("parameters required here");
    Team team2 = new Team("parameters required here");   
    Playoff p = new Playoff();
    p.add(team1);
    p.add(team2);
    p.startPlayoffs();
}

如果您在主类中创建了所有对象,那么它们可用于该方法,因为它们是本地的。当你调用p.add()时,你可以将它们添加到Playoff类中的数组或集合中。然后你的startPlayoffs()方法可以处理已经存储在类中的对象数组。