作者johnny10229 (johnny)
看板java
標題[問題] java程式邏輯問題
時間Tue Feb 2 16:39:04 2016
大家好
這邊有個程式問題想要請教,弄了好久還是不知道問題在哪
以下是程式碼
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