[问题] java程式逻辑问题

楼主: johnny10229 (johnny)   2016-02-02 16:39:04
大家好
这边有个程式问题想要请教,弄了好久还是不知道问题在哪
以下是程式码
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?
手机排版有点乱,抱歉
作者: k47100014 (MIT_No.14)   2016-02-02 19:05:00
因为你把i宣告在外面,i跑完for循环没break最后的值是100抱歉上面有点说错 应该是说 若没有break情况发生 i最后跑到100跳出循环 这时你指派给selectId当然会是100
作者: virnux (真心离伤心最近)   2016-02-11 19:39:00
变量没设定好 selectId好像是多余的

Links booklink

Contact Us: admin [ a t ] ucptt.com