gpt4 book ai didi

Java枚举序数返回-1?

转载 作者:搜寻专家 更新时间:2023-11-01 03:04:28 24 4
gpt4 key购买 nike

好吧,我目前正在为我正在从事的项目编写一些代码,并且我决定用于数据存储的 Enum 将是我最好的选择。但是在我生命中第一次,enum.ordinal() 返回 -1?

代码如下:

            DuelRules.Rules rule = DuelRules.Rules.values()[(buttonId - (buttonId < 29 ? 18 : 19))];
if (buttonId == 29) {
rule = DuelRules.Rules.POCKET;
}
System.out.println(rule + ", " + rule.ordinal());
rules.swapRule(player, other, rule);
reset(false);

此处声明:

System.out.println(rule + ", " + rule.ordinal());

它打印出正确的规则值,但是当它打印 rule.ordinal() 时它打印的是 -1?

例子:

HAT, -1

我的枚举:

public enum Rules {
HAT(5000, 1),
CAPE(5000, 2),
AMULET(5000, 4),
WEAPON(5000, 8),
BODY(5000, 16),
SHIELD(5000, 32),
LEG(5000, 128),
GLOVE(5000, 512),
BOOT(5000, 1024),
RING(5000, 4096),
ARROW(5000, 8192),
POCKET(17837, 1),

FORFEIT(4989),
MOVEMENT(4990),
RANGE(4991),
MELEE(4992),
MAGIC(4993),
DRINKS(4994),
FOOD(4995),
PRAYER(4996),
OBSTACLES(4997),
FUN_WEAPONS(4998),
NO_ABILITIES(4999),
SUMMONING(5001);

private final int varbitId;
private final int value;

private Rules(int id, int... value) {
this.varbitId = id;
this.value = value.length > 0 ? value[0] : 0;
}

}

请注意,枚举在另一个类中,不确定这是否会影响结果。感谢您的帮助,我完全迷失了这个。

编辑:经过进一步审查,我发现序号正在通过将其作为参数传递来更改?

控制台截图:

代码:

        } else if (buttonId >= 18 && buttonId <= 42) {
DuelRules.Rules rule = DuelRules.Rules.values()[(buttonId - (buttonId < 29 ? 18 : 19))];
System.out.println("Point one: "+rule + ", " + rule.ordinal());

rules.swapRule(player, other, rule);

getDuel(other).rules.setRules(player, other, rules
.rules);
reset(false);
sendFlash(interfaceId, buttonId);
}

在打印点一的地方,规则及其 .ordinal 是正确的,在本例中是 OBSTACLES,20

但是在 rules.swapRule 中传递规则参数的地方,它会将序号更改为 -1?

public boolean swapRule(Player player, Player other, Rules rule) {
System.out.println("Point 2(swapRule): " + rule + ", " + rule.ordinal());
}

作为参数传递时,是什么导致规则参数发生变化?

最佳答案

您的方法违背了使用枚举器的纯粹目的。您可以像这样直接使用枚举,而不是使用索引进行处理

button.setActionCommand (Rules.HAT.toString ());

然后在您的 ActoinListener 中,您可以使用此方法确定单击了哪个按钮

public void actionPerformed (ActionEvent e) {
if (Rule.valueOf (e.getActionCommand()) == Rules.HAT) {
//HAT related button was called, process it
}
}

关于Java枚举序数返回-1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27497962/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com