我希望输出适应年龄

时间:2018-12-19 00:11:43

标签: java

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仅在将其与感兴趣的东西进行比较时才有意义。

4 个答案:

答案 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){}

这可以确保一个年龄仅在输入一个年龄时输入。