作者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://webptt.com/cn.aspx?n=bbs/java/M.1454402347.A.4F0.html
※ 编辑: johnny10229 (223.137.136.89), 02/02/2016 16:39:56
1F:推 k47100014: 因为你把i宣告在外面,i跑完for回圈没break最後的值是1 02/02 19:05
2F:→ k47100014: 00 02/02 19:05
3F:推 k47100014: 抱歉上面有点说错 应该是说 若没有break情况发生 i最 02/02 19:09
4F:→ k47100014: 後跑到100跳出回圈 这时你指派给selectId当然会是100 02/02 19:09
5F:→ virnux: 变数没设定好 selectId好像是多余的 02/11 19:39