- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
好吧,我目前正在为我正在从事的项目编写一些代码,并且我决定用于数据存储的 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/
我需要定义 format为 date我的索引中的字段 { "mappings": { "properties": { "date": { "type": "da
我需要找到整数数组中元素的降序。 例子: 如果我有一个数组: x = {24, 55, 22, 1} 我想要一个 C 中的算法,它导致数组 order 其中: order = {2, 1, 3, 4}
我正在尝试用 Java 确定一个月中某个工作日的连续序号。即如果星期五是一个月的第一个或第三个星期五。 在阅读了我在 Java 日历上可以找到的所有内容和此处的帖子后,我找不到简单的方法。我能想到的一
我有一个关于 ordinal 的问题包裹在 R或者特别是关于 predict.clm()功能。我想计算linear predictor的 ordered probit估计。使用 MASS 包的 pol
一直提示输入 1 到 10 的数字 - 结果应将 st、rd、th 和 nd 添加到数字中。编写一个程序,提示用户输入 1 到 10 之间的任意整数,然后以序数形式显示该整数并附加后缀。 public
我有一个 D3 分组条形图,其中 x 轴使用我的 x0 比例形成,其中域作为数据值。由于域具有数据值,我的刻度文本也是相同的数据值。我想将刻度值更改为数据名称,保持比例不变,因为名称可以相同,但数据值
有没有办法使用 NSNumberFormatter 来获取 'th' 'st' 'nd' 'rd' 数字结尾? 编辑: 看起来它不存在。这是我正在使用的。 +(NSString*)ordinalNum
我想根据当天动态生成一串文本。因此,例如,如果是第 1 天,那么我希望我的代码生成 = "Its the 1*st*". 总共有 12 天,所以我做了以下事情: 我设置了一个循环 12 天的 for
ruby 或 rails 中是否有任何东西可以处理序数的格式:'1' 为 '1st','2' 为 '2nd',等等? 最佳答案 看起来你正在寻找序号: The Ruby on Rails framew
我是一名优秀的程序员,十分优秀!