java中需要逻辑清理帮助

时间:2013-01-09 03:45:19

标签: java performance

我在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。

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

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

3 个答案:

答案 0 :(得分:7)

我认为你可以通过替换

来摆脱if的链条
long empiresubID = (myMaxId / 1600) + 1;

答案 1 :(得分:4)

您的方法可以用两行代替:

long divisionID = myMaxId % 40 == 0 ? 1 : myMaxId % 40;
long empiresubID = (myMaxId / 1600) + 1;

答案 2 :(得分:2)

为什么不将myMaxId除以1600(使用整数除法)?

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

在制作中看到这样的代码有多少让我感到惊讶!