java—将对象列表调用到方法中以检查枚举值

30byixjq  于 2021-07-12  发布在  Java
关注(0)|答案(1)|浏览(423)

我是java新手,有一个名为 listPlayer 这是样品

  1. Player{FirstName='Marco', LastName='Reus', Team='Dortmund', Country='Germany', Fitness='Unfit', RecoveryTime='Slow'}

我也有一个枚举值的健身水平范围

  1. public enum LevelOfFitness {
  2. /**
  3. * Enum that represent the different level of Fitness of each player
  4. */
  5. CAREER_IN_DOUBT(8), INDEFINITELY_INJURED(7), INJURED(6), UNFIT(5), CLOSE_TO_FITNESS(4),
  6. NEAR_MATCH_FIT(3),
  7. MATCH_FIT(2), DATA_DEFICIENT(1), NOT_EVALUATED(0);
  8. private int value;
  9. LevelOfFitness (int aValue) {
  10. this.value = aValue;
  11. }
  12. public int getValue () {
  13. return value;
  14. }

}
我还有一个方法,可以循环检查 listPlayer 与枚举值中找到的相同。

  1. public LevelOfFitness from(String value){
  2. LevelOfFitness found = null;
  3. for(LevelOfFitness level : LevelOfFitness.values()){
  4. if(level.name().equalsIgnoreCase(value)){
  5. return level;
  6. }
  7. }
  8. throw new IllegalStateException("Not able to find fitness level for " + value);
  9. }

我正在努力理解如何将这个枚举方法调用到我的main和call中 listPlayer 进入循环,这样它可以返回一个健康水平。例如,第一个球员循环通过检查水平(不适合),并返回5作为水平非常感谢。

mkh04yzy

mkh04yzy1#

我假设你 from(String) 方法在中声明 enum LevelOfFitness .
你关心我吗 from(String)static 方法,调用如下: LevelOfFitness.from("string"); ;

  1. public static void main(String[] args){
  2. List<Player> playerList = new ArrayList<>();
  3. playerList.add(new Player("Marco", "Reus", "Dortmund", "Germany", "Unfit", "Slow"));
  4. playerList.add(new Player("Name1", "Name2", "Team1", "Country1", "not_evaluated", "time1"));
  5. playerList.add(new Player("Name1", "Name2", "Team1", "Country1", "error_fitness", "time1"));
  6. for(Player player : playerList){
  7. try{
  8. LevelOfFitness lof = LevelOfFitness.from(player.getFitness());
  9. System.out.println(lof.getValue());
  10. }catch(Exception e){
  11. e.printStackTrace();
  12. }
  13. }
  14. }
  15. ----- output -----
  16. 5
  17. 0
  18. java.lang.IllegalStateException: Not able to find fitness level for error_fitness
展开查看全部

相关问题