看板 java 關於我們 聯絡資訊
大家好 這邊有個程式問題想要請教,弄了好久還是不知道問題在哪 以下是程式碼 public void copyGh(int k, int kk) { int i; for (i = 0; i < cityNum; i++) { newPopulation[k][i] =oldPopulation[kk][i]; } public void select() { int k, i, selectId; float ran1; for (k = 1; k < scale; k++) { ran1 = (float) (random.nextInt(65535) % 1000 / 1000.0) ; for (i = 0; i < scale; i++) { if (ran1 < Pi[i]) break; } selectId = i; copyGh(k, selectId); } } 參數scale為100 執行這部分時會出現error 說明kk超過100,但i最大為99 那selectId最大也是99 為何會出現100? 手機排版有點亂,抱歉 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.137.136.89 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1454402347.A.4F0.html ※ 編輯: johnny10229 (223.137.136.89), 02/02/2016 16:39:56
k47100014: 因為你把i宣告在外面,i跑完for迴圈沒break最後的值是1 02/02 19:05
k47100014: 00 02/02 19:05
k47100014: 抱歉上面有點說錯 應該是說 若沒有break情況發生 i最 02/02 19:09
k47100014: 後跑到100跳出迴圈 這時你指派給selectId當然會是100 02/02 19:09
virnux: 變數沒設定好 selectId好像是多餘的 02/11 19:39