在Java中将枚举值设置为随机

时间:2017-04-01 06:55:57

标签: java

import java.util.*;
public enum Skills {
Random r= new Random();

//trying to use nextInt method in some case 
SKILLS(r.nextInt(125)+25),
VEHICLE(r.nextInt(125)+25),
ACCURACY(),WEAPONS(23),REFLEX(),
STRATEGY(),CHARISMA(),
HACKING(r.nextInt(125)+25),
SPEED(r.nextInt(125)+25),
STEALTH(r.nextInt(125)+25);
//end of skills 

private int value;
private Skills(int value){
    this.value=value;
}
public int getValue() {
    return value;
}
}

我无法将我的枚举值设置为随机。之后我会将这些技能提供给我游戏中的角色。我也不能使用nextInt方法。这是为什么 ?如何解决问题并正确使用这个枚举?

1 个答案:

答案 0 :(得分:0)

使用enum来实现这一点并不合理。请记住,enum常量是单例:所有字符将共享每个技能对象的相同单个副本,因此所有字符将具有相同的技能编号。这可能不是你想要的。

仅使用带字段的类更有意义:

public class Skills {
    private int vehicleSkill;
    private int hackingSkill;
    // etc.

    public Skills(Random r) {
        this.vehicleSkill = r.nextInt(125)+25;
        this.hackingSkill = r.nextInt(125)+25;
        // etc.
    }

    public int getVehicleSkill() {
        return vehicleSkill;
    }

    public int getHackingSkill() {
        return hackingSkill;
    }

    // etc.
}

这样你就可以为每个角色创建一个单独的Skills对象。