public class nbaPlayers {
int draftRank;
String playerName;
String playerTeam;
int playerAge;
int rank;
public nbaPlayers(String name, String team, int age, int collegeRank) {
name = this.playerName;
team = this.playerTeam;
age = this.playerAge;
collegeRank = this.draftRank;
}
public void setRating() {
if (playerAge < 21 && draftRank <=3) {
rank = 95;
}
else if (playerAge >=21 || draftRank <= 25) {
rank = 80;
}
else if (playerAge >25 || draftRank >=30 ) {
rank = 60;
}
else if (draftRank >= 30 || draftRank <=50) {
rank = 45;
}
else {
rank = 10;
}
}
public int getRating() {
return rank;
}
}
public class helloWorld {
public static void main(String[] args) {
nbaPlayers player1 = new nbaPlayers("Kyrie", "Duke",18,7);
nbaPlayers player2 = new nbaPlayers("D-Book", "Kentucky",18,4);
nbaPlayers player3 = new nbaPlayers("LBJ", "None",34,1);
player1.setRating();
System.out.println("This player rating is: " + player1.getRating());
player2.setRating();
System.out.println("This player rating is: " + player2.getRating());
player3.setRating();
System.out.println("This player rating is: " + player3.getRating());
}
}
输出是什么问题,因为这些值一直说初始等级为95? 我希望勒布朗(LeBron)的年龄为34岁,以更改评分。 P.S Java仅在将其与感兴趣的东西进行比较时才有意义。
答案 0 :(得分:2)
您需要翻转您的构造函数分配:
this.playerName = name;
this.playerTeam = team;
this.playerAge = age;
this.draftRank = collegeRank;
答案 1 :(得分:0)
您还需要将比较固定在第四条if语句上:
else if (draftRank >= 30 || draftRank <=50) {
rank = 45;
}
您要在两个相同的字段上做什么?如果语句也具有相同的字段,则也是第3个。
答案 2 :(得分:0)
与您的示例程序有关:
请将此重写的nbPayer与您的比较:
public class nbaPlayers {
private int draftRank;
private String playerName;
private String playerTeam;
private int playerAge;
private int rank;
public nbaPlayers(String name, String team, int age, int collegeRank) {
// constructors assignment has to be flipped as mentioned
this.playerName = name;
this.playerTeam = team;
this.playerAge = age;
this.draftRank = collegeRank;
}
public void setRating() {
if (playerAge < 21 && draftRank <=3) {
rank = 95;
}
else if (playerAge >=21 || draftRank <= 25) {
rank = 80;
}
else if (playerAge >25 || draftRank >=30 ) {
rank = 60;
}
else if (draftRank >= 30 || draftRank <=50) {
rank = 45;
}
else {
rank = 10;
}
}
public int getRating() {
return rank;
}
public static void main( String[] args ) {
// also take note of your test values
nbaPlayers player1 = new nbaPlayers( "Kyrie", "Duke", 18, 1 );
nbaPlayers player2 = new nbaPlayers( "D-Book", "Kentucky", 20, 1 );
nbaPlayers player3 = new nbaPlayers( "LBJ", "None", 34, 1 );
player1.setRating();
System.out.println( "Player 1 rating is: " + player1.getRating() );
player2.setRating();
System.out.println( "Player 2 rating is: " + player2.getRating() );
player3.setRating();
System.out.println( "Player 3 rating is: " + player3.getRating() );
}
}
重写的类的输出是这样的:
Player 1 rating is: 95
Player 2 rating is: 95
Player 3 rating is: 80
答案 3 :(得分:0)
setRating()方法错误。例如,您应该从biggist编号开始if,如下所示: 如果(年龄> 90){} if(年龄> 80){}
这可以确保一个年龄仅在输入一个年龄时输入。