2013-01-09 80 views
2

我在java中工作,遇到了我的同伴大學寫的一塊奇怪的代碼塊,我確定模運算符會工作,但由於某種原因,我沒有得到我認爲的預期結果我會從運營商那裏得到。在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個部門,我們首先填寫所有部門的子部門1,首先使用myMaxID%40作爲用戶註冊。

那麼一旦做到這一點,則細分會翻轉到2,然後我們填寫所有部門細分2.

我不認爲這是目前編程的方法是有效的,應該有一些其他的方式去做這個。

任何想法或幫助將是偉大的。

+4

http://codereview.stackexchange.com/可能是這個問題比較好。 –

+0

甚至不知道存在...書和標記..謝謝。 –

+0

你試過簡單的int分割嗎? –

回答

2

更換爲什麼不(用整數除法)剛剛除以1600 myMaxId擺脫if S中的鏈?

然後你就可以直接設置empiresubID到結果加一...

它總是讓我感到吃驚看到這樣多的代碼如何在生產中存在!

4

你的方法可以通過兩條線來代替:

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