import java.util.ArrayList;
import java.util.Date;
public class Schedule {
ArrayList<Flight> flightList = new ArrayList();
java.util.Date date = new java.util.Date();
public Schedule() {
flightList = new ArrayList(flightList);
this.date.getTime();
}
public Flight findFlight(String num){
for (Flight flight: flightList)
if (flight.getFlightnum().equals(num)){
return flight;}
else
return null;
}
findFlight这个方法,总是显示我的return类型有错误.明明是匹配的了,这是为啥呢?
这是因为你在for循环里面有return语句,但是在外面没有。
如果flightList为空的时候,就不知道返回什么了。
把else去掉,return null属于else代码块,所以系统自认没有return
是外面没有返回值。。。
你这代码写的可读性好差,for循环后面加大括号,if和else也最好加上大括号,让人一看就能看懂
你这段代码就是一个很简单的遍历查找过程,找不到应该是遍历完整个List后才返回null的,所以你的else分支没有意义的。
Eclipse的自动修复功能ctrl+1显示可以直接在else分支后面return null。但是这样就会不合逻辑,如果你的num号的Flight对象不是列表中的第一个,那么你的代码永远都是进入了else分支返回null的。
所以正确的代码是:去掉else分支,最后for循环完成后仍没有找到才是return null.
public Flight findFlight(String num){
for (Flight flight: flightList)
//找到就返回
if (flight.getFlightnum().equals(num)){
return flight;
}
}
//for循环结束仍然没有找到则返回null
return null;
}
首先你的这段代码可读性真的好差,for循环在第一次执行时就在if-else语句中被终止了意义何在。
for循环的大括号在哪里,
第一 格式不太好 第二,可以在最后加一个return null
public Flight findFlight(String num){
Flight f = null;
int k = 0;
while(k < flightList.size()) {
Flight thisf = flightList.get(k);
if(thisf.getFlightnum().equals(num)) {
f = thisf;
break;
}
k++;
}
return f;
}
public Flight findFlight(String num){
Flight f = null;
int k = 0;
while(k < flightList.size()) {
Flight thisf = flightList.get(k);
if(thisf.getFlightnum().equals(num)) {
f = thisf;
break;
}
k++;
}
return f;
}