2015-04-06 51 views
0

嗨我已經if條件下...Java的模運算符行爲異常爲if條件

//Add a space if necessary 
if (i!=0 && spaceIn>0 && i%spaceIn==0) { 
    System.out.println("Converted Letter : " + curLtr + " at position " + i + " Needs a space"); 
    curLtr = curLtr + " "; 
}; 

1日2條件總是與測試輸入我給它正確的。

發生了什麼是模塊化條件i%spaceIn==0不報告爲真時,它是。

當i爲3且spaceIn爲3時的示例如果條件有效,i%spaceIn = 0。

當我到達6甚至我可以看到(從system.out進一步)答案是0它不會觸發if條件。

有時它不是當我i = 12時也這麼做!

太奇怪了。

我打印出i%space的答案在整個循環中,即使答案是0,每3的倍數就有0個,它有時不會觸發if條件。

同樣的事情,如果spaceIn是5.它跳過10.它是什麼數字,它似乎只是跳過有時無緣無故。

我在想什麼?

+7

把一些額外的代碼放在你定義你的i和spacelen的地方 – Pratik 2015-04-06 06:08:46

+3

有沒有其他的線程改變這些值? – Maroun 2015-04-06 06:14:23

+2

作爲一般性評論,在這樣的表達中額外的括號總是很好的,以便以何種順序來評估不同部分。 'if((i!= 0)&&(spaceIn> 0)&&(i%spaceIn == 0))'更好的可讀性。 – 2015-04-06 06:26:13

回答

-2

使用下面的代碼... 您已經終止if塊......這可能會導致一個問題...

if (i!=0 && spaceIn>0 && i%spaceIn==0) { 
System.out.println("Converted Letter : " + curLtr + " at position " + i + " Needs a space"); 
curLtr = curLtr + " "; } 

我希望它會爲你工作,因爲它運行在我的機器上細....

+0

這是如何回答這個問題的? 「if」條件完全相同。 – 2015-04-06 09:47:35

+0

*「你已經終止if塊......它可能會導致問題」* ...不,它不能。這個分號是'if'後的空語句。 – Tom 2015-04-06 11:13:15