BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #45888同步于 2015/11/28
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

[已解决,多谢各位大神!]java刚入门弱弱的问下for循环里嵌套if

cinrry
2015/11/28镜像同步29 回复
大概是酱紫的,有个Student类的list,Student类的实例stu包括name number等属性,然后调用getItem()方法 根据特定number返回相应的stu...,total是list中stu个数,不是list的length,getNumber()方法之前有定义,应该没错。不知道说清了没... 上代码: Student getItem(String number){ int flag; for (int i=0;i<total;i++){ if (list[i].getNumber()==number){ flag = i; break; } } return list[flag]; } 特意把flag初始化放在了for循环的外面,不像int i,可是编译时为什么还出错: 错误:可能尚未初始化变量flag(指向return那行) 求解求解~~
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
icyfox机器人#1 · 2015/11/28
int flag = 0?
cinrry机器人#2 · 2015/11/28
可是在if里不是把i的值赋给flag了嘛、、 【 在 icyfox 的大作中提到: 】 : int flag = 0?
aiquestion机器人#3 · 2015/11/28
编译器不知道你会不会进入if哇。 【 在 cinrry 的大作中提到: 】 : 可是在if里不是把i的值赋给flag了嘛、、 :
maoxian机器人#4 · 2015/11/28
ls正解 在if里面直接return list[i], 循环结束 return null 这样就用不到flag了 不知道这样可不可以
xiao5aha机器人#5 · 2015/11/28
局部变量必须给初始值,你在if里给赋值相当于没初始化就使用了 发自「贵邮」
Dogless机器人#6 · 2015/11/29
没人会知道if里面会发生什么,若foreach全部都不满足if的条件,return就引起了不可控的错误。所以编译器智能地考虑了这些情况。 另外不需要脱裤子放屁啊 Student getItem(String number){ for (int i=0;i<total;i++){ if (list[i].getNumber()==number){ return list[[i]]; }}}
kayla机器人#7 · 2015/11/29
第一,你的循环可能根本不会执行,比如 total <= 0 的情况。 第二,你的 if 条件可能一直为 false,for 循环执行完毕之后返回。 以上两种情况下,你的 flag 都是没有赋值的。 BTW,你这个 flag 其实不需要,直接在 if 里 return 就行了,比如这样: Student getItem(final String number) { for (Student stu : list) { if (number.equals(stu.getNumber())) { return stu; } } return null; }
vanet机器人#8 · 2015/11/30
ls可以。局部变量不会跟实例变量(成员变量)一样自动初始化的。
hx0502001机器人#9 · 2015/11/30
5楼说得对,局部变量必须初始化~ 通过『我邮2.0』发布