Java Top.

使用Spring 5和Spring Boot 2开始,通过学习春天课程:

>>查看课程

1.概述

在这篇简短的教程中,我们将展示Modulo Operator是什么,以及我们如何将其与Java用于一些常见用例。

2.模数运营商

让我们从Java中开始简单分裂的缺点。

如果分割操作员两侧的操作数具有类型,操作的结果是另一个int:

@test公共void whenintegerdivision_thenlosesremainder(sasterthat(11/4).isequalto(2);}

当至少一个操作数有类型时,同一部门给了我们一个不同的结果漂浮或者双倍的:

@test公共void whendoubledision_thenkeeksremainder(sasterthat(11/4.0).isequalto(2.75);}

我们可以观察到,我们在划分整数时失去了划分的剩余时间。

Modulo Operator为我们提供了此余的:

@Test公共空白当Modulo_thenreturnSremainder(){assertthat(11%4).isequalto(3);}

其余部分是将11(股息)除以4(除数) - 在本案中,3。

由于相同的原因,依次归零,不可能在右侧参数为零时使用Modulo Operator。

划分和模数操作都扔掉arithmeticexception.当我们尝试使用零作为右侧操作数:

@Test(预期= arithmeticexception.class)public void whendivisionbyzero_thenarithmeticexception(){double结果= 1/0;@Test(预期= arithmeticexception.class)当Modulobyzero_thenarithmeticexception(){double结果= 1%0;}

3.常见用例

Modulo算子最常见的用例是找出给定的数字是奇数甚至是偶数。

如果任何数字和两个之间的模数操作的结果等于一个,则这是一个奇数:

@test公共void whendivisorisoddandmoduluuare2_thenresultis1(){assertthat(3%2).isequalto(1);}

另一方面,如果结果为零(即没有剩余时间),则为偶数:

@test公共void whendivisorisevenandmoduluuareis2_thenresultis0(){assertthat(4%2).isequalto(0);}

Modulo操作的另一个良好使用是跟踪圆形阵列中的下一个可用点的索引。

在简单实现循环队列中值,元素保持在固定大小的阵列中。

任何时候我们想要将元素推向我们的循环队列,我们​​只需计算我们已经插入的项目数量的Modulo和队列容量来计算下一个免费位置:

@test public void whinitikemsaddedtocircularquels_thennoarrayIndexoutofbounds(){int queue_capacity = 10;int [] circularqueue = new int [queue_capacity];int项目是= 0;for(int值= 0;值<1000;值++){int writeIndex = ++ ItemsEnserted%queue_capacity;循环Φ=值;}}

使用Modulo Operator我们预防写作因此,落下阵列的界限,我们永远不会得到一个ArrayIndexoutofBoundSexception.

但是,一旦我们插入超过queue_capacity.项目,下一个项目将覆盖第一个项目。

4。结论

Modulo算子用于计算否则丢失的整数划分的其余部分。

如果给定的数量是偶数或奇数,则这样做是有用的简单的事情是有用的,以及更复杂的任务,如跟踪圆形阵列中的下一个写入位置。

示例代码可用github存储库

Java底部

使用Spring 5和Spring Boot 2开始,通过学习春天课程:

>>查看课程
评论在本文上关闭!