2

我在 Java 中工作,遇到了我的同事写的一段奇怪的代码,我确信模运算符会起作用,但由于某种原因,我没有得到预期的结果,我认为我会从操作员那里得到预期的结果。

现在代码编写如下:

long divisionID = myMaxId % 40;
                if (divisionID == 0) {
                    divisionID = 1;
                }
                long empiresubID = 1;
                if (myMaxId >= 1600) {
                    empiresubID = 2;
                }
                if (myMaxId >= (1600 * 2)) {
                    empiresubID = 3;
                }
                if (myMaxId >= (1600 * 3)) {
                    empiresubID = 4;
                }
                if (myMaxId >= (1600 * 4)) {
                    empiresubID = 5;
                }
                if (myMaxId >= (1600 * 5)) {
                    empiresubID = 6;
                }

其他几个地方也是这样,一直到 1600*40。

我想为 myMaxId %1600 使用模数运算符,但这给了我不正确的结果。

最终目标是有 40 个部门,我们首先在用户注册时使用 myMaxID % 40 为所有部门填充子部门 1。

然后一旦完成,细分将翻转到 2,然后我们填写所有细分细分 2。

我不认为它目前的编程方式是有效的,应该有其他方式来做到这一点。

对此的任何想法或帮助都会很棒。

4

3 回答 3

7

if我认为您可以通过替换来摆脱 s 链

long empiresubID = (myMaxId / 1600) + 1;
于 2013-01-09T03:49:23.220 回答
4

您的方法可以替换为两行:

long divisionID = myMaxId % 40 == 0 ? 1 : myMaxId % 40;
long empiresubID = (myMaxId / 1600) + 1;
于 2013-01-09T04:19:06.953 回答
2

为什么不直接除以myMaxId1600(使用整数除法)?

然后可以直接设置empiresubID为结果加一...

看到生产中存在多少这样的代码总是让我感到惊讶!

于 2013-01-09T03:50:28.263 回答