问:播放器(类)java

时间:2018-01-02 05:52:00

标签: java eclipse

必须按照这些要求在java eclipse中编写一个玩家类

a)Player类应该有一个默认构造函数和两个自定义构造函数 - 一个 接受Name对象,另一个接受Name和PairOfDice对象。

b)应该为其名称设置get和set方法,为PairOfDice设置get方法。它 应该有一个名为rollDice和getDiceScore的方法,它们都只是委托给 PairOfDice类,已经具有此功能。你也应该有一个 适合toString()方法。

c)添加另一个接受单个String的void方法setFullPlayerName(String) 参数(例如“Joe Bloggs”)然后使用它来设置第一个和姓氏 单独地通过提取相关信息然后调用相应的设置器 Name类的方法。

到目前为止,我有这个

public class Player {

    //Fields of  the app
    private String firstName;
    private String lastName;
    private Die red;
    private Die blue;

    //PlayerName and dice pair Default Constructor
    public Player() {
        firstName = "";
        lastName = "";
        red = new Die();
        blue = new Die();
    }

    public Player(String firstName, String lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
    }

    public Player(String firstName, String lastName,Die red,Die blue) {
        this.firstName = firstName;
        this.lastName = lastName;
        this.red = red;
        this.blue = blue;
    }

    // Methods
    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public void setlastName(String lastName) {
        this.lastName = lastName;
    }

    public String getFirstName() {
        return firstName;
    }

    public String getlastName() {
        return lastName;
    }

    @Override
    public String toString() {
        return "PairOfDice:[red=" + red + ", blue=" + blue + "]";
    }


    public void rollDice() {
        red.roll();
        blue.roll();
    }

    public int getDiceScore() {
        return red.getScore() + blue.getScore();
    }

    public Die getRed() {
        return red;
    }

    public Die getBlue() {
        return blue;
    }

    public String setFullName() {
        if (firstName.equals("") && lastName.equals("")) {
            return "";
        } else {
            return firstName + " " + lastName;
        }
    }
}

我的代码是否正确?如果不是我必须做出哪些改变来纠正它

4 个答案:

答案 0 :(得分:0)

有几个问题:

  • 骰子不死:private Die red;

  • 最好使用名词命名变量:private Dice redDice;

  • space之后应该有comma, Dice redDice, Dice blueDice

  • setFullName应接受1个字符串并致电setFirstNamesetLastName设置名称

实施示例:

 void setFullName(String fullName) {
      /// split full name into lastName and firstName
      setFirstName(firstName); 
      setLastName(lastName);
 }

答案 1 :(得分:0)

让我们直截了当:代码的这一部分:

public String setFullName() {
    if (firstName.equals("") && lastName.equals("")) {
        return "";
    } else {
        return firstName + " " + lastName;
    }
}

它的误导性是因为方法名称它说它设置了名称,但是你却改回了名字

所以改成它:

public void setFullPlayerName(String name) {
    String[] splitted = name.split(" ");
    firstname = splitted[0];
    lastname = splitted[1]
}

现在没有必要添加方法 setFullPlayerName

但是我发现你可能需要一个方法来返回一个全名,所以:

public String getFullPlayerName() {
    return firstname + " " + lastname;
}

希望能够解决您的问题:D

答案 2 :(得分:0)

一切似乎都很好,但我想你忘了定义roll()函数。除此之外,其他一切似乎都很好:)

答案 3 :(得分:0)

我发现此代码有几个问题:

  

a)Player类应该有一个默认构造函数和两个自定义构造函数 - 一个接受Name对象,另一个接受Name和PairOfDice对象。

     

b)应该为其名称设置get和set方法,为PairOfDice设置get方法。它应该有一个名为rollDice和getDiceScore的方法,它们都只是委托给已经具有此功能的PairOfDice类。你还应该有一个合适的toString()方法。

如果它告诉您需要Name个对象和PairOfDice个对象,则不能只输入两个String和两个Die并调用同样的事情。您需要实际使用NamePairOfDice类。

  

c)添加另一个接受单个String参数的void方法setFullPlayerName(String)(例如“Joe Bloggs”),然后使用它来通过提取相关信息然后调用相应的setter来单独设置第一个和系列名称Name类的方法

而不是setFullPlayerName,你创建了一个名为setFullName的方法,它没有做它应该做的事情。它应该接受String并返回void,而不接受任何参数并返回String。它看起来像一个吸气剂,而不是一个设定者。