看板 java 關於我們 聯絡資訊
Thank God! (& Amos XD) 經過一番努力後,我終於在自己的電腦上重現錯誤了! 刪減之後,我把程式改成目前這樣: http://gist.github.com/406451 這支程式正確應該要輸出: Case 1: 2147483647 Case 2: 2146483647 2146583647 2146683647 2146783647 2146883647 2146983647 2147083647 2147183647 2147283647 2147383647 2147483647 // 不重要,反正就是在迴圈裡跑了 11 次 但是目前輸出的卻是: (不一定每次都錯,有時後會執行出正確結果) Case 1: 2147483647 Case 2: 2146483647 // 迴圈只跑第一次就離開了! 如果要讓程式執行出正確的結果,有兩個方法: (1) 可以把 c 的初始值設為 1, 這樣就不會執行到第一筆測資 而第二筆測資就會得到正確結果! (2) 在 26 行的 i<=u 這裡作強制轉形成 long 的動作。 以下是我的執行環境: Kernel: 2.6.32-22-generic-pae OS: Ubuntu 10.04 LTS JDK: 1.6.0_20 如果有板友願意幫忙測試, 請用站內信寄給我: (1) 執行結果正確與否 (2) 執行環境 我會整理之後貼在板上,並向 Oracle 反映。 謝謝大家收看 :) --- 我只是想寫個 ACM 而已,怎麼會搞成這樣 囧 -- T$,修好它吧。 ⊙─ ─⊙▂⊙ 碰到問題,用SoftICE就對了! █◤ Lee T$ Chen MYTHBUGTERS by dajidali -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.230.54.151
godfat:碰到問題,用SoftICE就對了! 05/20 00:27
PsMonkey:碰到問題,用SoftICE就對了! 05/20 00:42
jlovet:-d32 -d64有差, -Xint 也有差... 05/20 01:56
jtmh:「不一定每次都錯」-> 那錯的比例大概是多少? 05/20 04:21
jtmh:我試了 20 幾次都還沒碰到問題 05/20 04:28
jtmh:Kernel: 2.6.31.13 OS: MDV 2010 JDK: 1.6.0_16 05/20 04:30
AmosYang:突然想到,把 JIT 關掉試試? 05/20 04:45
tkcn:我錯的比例至少九成以上吧 05/20 08:58
Lordaeron:完全沒問題, 怎麼跑都正確結果,無bug, 32bitXP+1.6.0_13 05/20 09:21
拿了上班的機器來測 Kernel: 2.6.32-21-generic OS: Linux Mint 9 (Ubuntu 10.04 base) (x86 32-bit) (1) JDK: OpenJDK 1.6.0_18 直接拿之前 compile 過的 class 執行,完全沒問題 (2) JDK: SunJDK 1.6.0_20 無論有無重新 compile,完全沒問題.... 這...(2) 沒錯聽起來還蠻恐怖的, 畢竟這軟體環境跟我在家中幾乎是差不多的。 ※ 編輯: tkcn 來自: 140.122.183.199 (05/20 09:32)