必须按照这些要求在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;
}
}
}
我的代码是否正确?如果不是我必须做出哪些改变来纠正它
答案 0 :(得分:0)
有几个问题:
骰子不死:private Die red;
最好使用名词命名变量:private Dice redDice;
space
之后应该有comma
:, Dice redDice, Dice blueDice
setFullName
应接受1个字符串并致电setFirstName
和setLastName
设置名称
实施示例:
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
并调用同样的事情。您需要实际使用Name
和PairOfDice
类。
c)添加另一个接受单个String参数的void方法setFullPlayerName(String)(例如“Joe Bloggs”),然后使用它来通过提取相关信息然后调用相应的setter来单独设置第一个和系列名称Name类的方法
而不是setFullPlayerName
,你创建了一个名为setFullName
的方法,它没有做它应该做的事情。它应该接受String
并返回void
,而不接受任何参数并返回String
。它看起来像一个吸气剂,而不是一个设定者。