返回信息流大概是酱紫的,有个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那行)
求解求解~~
这是一条镜像帖。来源:北邮人论坛 / java / #45888同步于 2015/11/28
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
[已解决,多谢各位大神!]java刚入门弱弱的问下for循环里嵌套if
cinrry
2015/11/28镜像同步29 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
没人会知道if里面会发生什么,若foreach全部都不满足if的条件,return就引起了不可控的错误。所以编译器智能地考虑了这些情况。
另外不需要脱裤子放屁啊
Student getItem(String number){
for (int i=0;i<total;i++){
if (list[i].getNumber()==number){
return list[[i]];
}}}
第一,你的循环可能根本不会执行,比如 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;
}