Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用模运算符递增和递减整数_Java_Increment_Modulo_Decrement - Fatal编程技术网

Java 如何使用模运算符递增和递减整数

Java 如何使用模运算符递增和递减整数,java,increment,modulo,decrement,Java,Increment,Modulo,Decrement,我正在尝试根据单击增加一个整数。点击是如何发生的并不重要,所以我将坚持逻辑。我是用Java做这件事的,但是逻辑应该是一样的 int index = 0; // then within the click event //arrySize holds the size() of an ArrayList which is 10 index = (index + 1) % arrySize; 使用此逻辑,每次用户单击时,索引将增加1。当index匹配arrySize (10%10会使指数回到0

我正在尝试根据单击增加一个整数。点击是如何发生的并不重要,所以我将坚持逻辑。我是用Java做这件事的,但是逻辑应该是一样的

int index = 0;

// then within the click event
//arrySize holds the size() of an ArrayList which is 10

index = (index + 1) % arrySize;
使用此逻辑,每次用户单击时,
索引将增加1。当
index
匹配
arrySize

(10%10会使指数回到0)这很好,因为它有点像一个循环,从0到10,然后回到0,永远不会超过10

我尝试着做同样的逻辑,但是向后 其中,基于单击,数字将递减,然后变为0 返回到
arrySize
,而不是
-1

我怎样才能达到这个逻辑

(index + arraySize - 1) % arraySize

执行您想要的操作。

从Java 8开始,您可以使用该方法。引用其Javadoc(我的重点):

地板模量为
x-(floorDiv(x,y)*y)
与除数
y
具有相同的符号,并且在
-abs(y)
的范围内

因此,您将有:

index = Math.floorMod(index - 1, arrySize);

您不能直接使用
-1%5
,因为这将输出
-1

index=arraySize-((index+1)%arryize)

如果您想要基于1的索引,请使用此选项。例如,如果您想在1为1的月份中后退

int previous = ((index - 1 - arraySize) % arraySize) + arraySize
结果

index    previous
1        12
2        1
3        2
4        3
5        4
6        5
7        6
8        7
9        8
10        9
11        10
12        11

是的,我知道我可以用一个简单的if语句来实现,但我想知道是否可以用moduloI来实现。我看这看起来不错,我将尝试一下,让你知道。
index    previous
1        12
2        1
3        2
4        3
5        4
6        5
7        6
8        7
9        8
10        9
11        10
12        11