将枚举变量递增到Java中的下一个元素

将枚举变量递增到Java中的下一个元素,java,enums,Java,Enums,我在Java中实现了一个Tic-Tac-Toe,并声明了如下枚举: 公共枚举播放器{X,O}; 移动时,我需要切换到另一个玩家,我这样做: this.nextPlayer=((this.nextPlayer==Player.X)?Player.O:Player.X); 是否有一种方法可以通过枚举结构的下一个元素自动“递增”?我想知道有5个或6个不同的值,并希望在没有大量代码的情况下(也不实现分离的方法)交换它们。您可以使用枚举的ordinal()方法和模运算符来实现这一点: this.nex

我在Java中实现了一个Tic-Tac-Toe,并声明了如下枚举:

公共枚举播放器{X,O};
移动时,我需要切换到另一个玩家,我这样做:

this.nextPlayer=((this.nextPlayer==Player.X)?Player.O:Player.X);
是否有一种方法可以通过枚举结构的下一个元素自动“递增”?我想知道有5个或6个不同的值,并希望在没有大量代码的情况下(也不实现分离的方法)交换它们。

您可以使用枚举的ordinal()方法和模运算符来实现这一点:

this.nextPlayer = (nextPlayer.ordinal() + 1) % Player.values().length;
可以将枚举的ordinal()方法与模运算符一起使用,以实现以下目的:

this.nextPlayer = (nextPlayer.ordinal() + 1) % Player.values().length;
可以将枚举的ordinal()方法与模运算符一起使用,以实现以下目的:

this.nextPlayer = (nextPlayer.ordinal() + 1) % Player.values().length;
可以将枚举的ordinal()方法与模运算符一起使用,以实现以下目的:

this.nextPlayer = (nextPlayer.ordinal() + 1) % Player.values().length;
values()
返回一个数组,因此它应该是
.length
而不是
.size()
ordinal()FTW!非常感谢!:)
values()
返回一个数组,因此它应该是
.length
而不是
.size()
ordinal()FTW!非常感谢!:)
values()
返回一个数组,因此它应该是
.length
而不是
.size()
ordinal()FTW!非常感谢!:)
values()
返回一个数组,因此它应该是
.length
而不是
.size()
ordinal()FTW!非常感谢!:)