Java-当您将一项添加到列表中的最大值时,如何转到第一项?
我有4个方向,ID分别为Java-当您将一项添加到列表中的最大值时,如何转到第一项?,java,Java,我有4个方向,ID分别为1,2,3,4。(北、东、南、西) 如果我想左转,我会得到当前的Id和-1。我想我找到了这个的算法 int currentDirection = 1; currentDirection = (currentDirection - 1) % 4 + 4; 如果当前方向是1(北),我想向左(负),我得到这个结果: Result: 4 所以它起作用了。全方位合作。但我不知道当我想去右边(加号)时如何得到正确的结果。我试过这个代码。如果当前方向为1、2或4,则该功能有效。但当
1
,2
,3
,4
。(北、东、南、西)
如果我想左转,我会得到当前的Id
和-1。我想我找到了这个的算法
int currentDirection = 1;
currentDirection = (currentDirection - 1) % 4 + 4;
如果当前方向是1(北),我想向左(负),我得到这个结果:
Result: 4
所以它起作用了。全方位合作。但我不知道当我想去右边(加号)时如何得到正确的结果。我试过这个代码。如果当前方向为1
、2
或4
,则该功能有效。但当当前方向为3
(南)时,它不起作用
结果会是这样
Result: 0
简单地说:
currentDirection=(currentDirection%4)+1代码>
更新:
我将按如下方式实现它,因为我个人认为它更具可读性:
右转:
nextDirection = (currentDirection == 4) ? 1 : (currentDirection + 1);
左转:
nextDirection = (currentDirection == 1) ? 4 : (currentDirection - 1);
右转:currentDirection=currentDirection%4+1
左转:currentDirection=(currentDirection+2)%4+1
currentDirection=currentDirection%4+1
这就是你要找的吗?你确定你的左转算法适用于所有方向吗?谢谢@J.Z,它正在工作。你先回答。如果你写一个答案,我会接受的。否则我会接受第一个答案。@AndrewTobilko你是对的。现在不行了。我想我在右转时改变了密码(你能加上左转吗?我现在也需要:)谢谢你的回答。它确实更具可读性,做得更好,我投了更高的票,但我需要接受@J.Z的答案。很抱歉
nextDirection = (currentDirection == 1) ? 4 : (currentDirection - 1);