[問題] java程式邏輯問題

看板java作者 (johnny)時間9年前發表 (2016/02/02 08:39), 9年前編輯推噓2(203)
留言5則, 2人參與, 最新討論串1/1
大家好 這邊有個程式問題想要請教,弄了好久還是不知道問題在哪 以下是程式碼 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

02/02 19:05, , 1F
因為你把i宣告在外面,i跑完for迴圈沒break最後的值是1
02/02 19:05, 1F

02/02 19:05, , 2F
00
02/02 19:05, 2F

02/02 19:09, , 3F
抱歉上面有點說錯 應該是說 若沒有break情況發生 i最
02/02 19:09, 3F

02/02 19:09, , 4F
後跑到100跳出迴圈 這時你指派給selectId當然會是100
02/02 19:09, 4F

02/11 19:39, , 5F
變數沒設定好 selectId好像是多餘的
02/11 19:39, 5F
文章代碼(AID): #1Mi6ihJm (java)
文章代碼(AID): #1Mi6ihJm (java)