请帮我看看这段程序,他老说我没返回值?因该怎么改? else{ mm=mm-1; if(mm<0){ mm=60+mm; tt=tt-1; } 就是没返回值呀 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 }else{ mm=mm-1; if(mm<0){ mm=60+mm; tt=tt-1; } }return在哪里? 少考虑了一个分支try{ for(int j=0;j<a;j++){ s[0]=String.valueOf(tt)+":"+String.valueOf(mm);//得到时间...循环作完,没有出错,而其中的if(rsm.next())都为false,此时方法没有返回值 如果程序正常结束,即try中的循环全部完成,没有出现的rsm.next()的情况下,函数没有返回值,在try的最后加上return null; for(int j=0;j<a;j++) { s[0]=String.valueOf(tt)+":"+String.valueOf(mm);//得到时间 sqlm="select * from book."+clubno+"sj where (date="+teedate+" && time="+s[0]+")"; rsm=this.stmt.executeQuery(sqlm); if(rsm.next()) { return s; break; } else { mm=mm-1; if(mm<0) { mm=60+mm; tt=tt-1; } } //这里::if(j == a-1){return ??} } if(rsm.next()){ return s; break; //这里不是已经返回,并且跳出循环了吗?}else{ mm=mm-1; if(mm<0){ mm=60+mm; tt=tt-1; }} 看gularess(无吃哪拉) 说的即如果for中所有条件只满足else呢(即使实际不会) 还有,return s; 就行了 break;不必 最好能在最后加一个return语句,这样就可以有一个默认的返回值了。即使在前面的分支中不返回,也不会报错。 可能开始我说的不太清楚,现在我把这个流程在说一遍//打球时间与球道开球时间有偏差时的处理程序,例如预定7:00,但是实际球道时间流程为6:58和7:08 private String[] make_good_time(String teedate,String teetime,String clubno,int a){ String sqlm; ResultSet rsm; String[] r; String[] s=new String[1]; int mm=0; //定义分钟 int tt=0; //定义小时 if (teetime.length()==4){ //当时间字符串为5:45时 tt=Integer.parseInt(teetime.substring(0,1)); //将字符形式的小时转换成int型 mm=Integer.parseInt(teetime.substring(2,4)); //将字符形式的分钟转换成int型 } else { //当时间字符串为15:45时 tt=Integer.parseInt(teetime.substring(0,2)); //将字符形式的小时转换成int型 mm=Integer.parseInt(teetime.substring(3,5)); //将字符形式的分钟转换成int型 } try{ for(int j=0;j<a;j++){ //a的类型是int,单位是分钟,这个for循环的用意是找到合适的时间 s[0]=String.valueOf(tt)+":"+String.valueOf(mm);//得到时间 sqlm="select * from book."+clubno+"sj where (date="+teedate+" && time="+s[0]+")";//得到sql语句 rsm=this.stmt.executeQuery(sqlm); //执行查询 if(rsm.next()){ //判断rsm.next(),ture则 return s; //返回时间 break; //中止for循环 }else{ //false,则处理时间, mm=mm-1; //处理分钟,每运行一道for循环mm减1,也就是说时间向前移动1分钟 if(mm<0){ //当分钟为负时 mm=60+mm; //处理分钟 tt=tt-1; //处理小时 }//end if 这个if的用途是处理时间 }//end if }//end for }catch(SQLException e){//当执行完a遍后,rsm.next()仍然为false时 r=new String[1]; r[0]="数据出错"; return r; }//end try }//end make_good_time 当 rem.next() 返回 false 时,你没有返回值. 难道它就不执行for循环了吗? 在最后加上返回值,可以为return null,如:private String[] make_good_time(String teedate,String teetime,String clubno,int a){ ... try{ .. }catch(SQLException e){ r=new String[1]; r[0]="数据出错"; return r; } return null; } 问题是编译程序认为 有可能 所有循环中的条件都是 !rsm.next() java 跟踪鼠标~~ DatabaseMetaData.getTables()怎样过滤系统表 把图标加入到JTree后,节点上的文字不见了。求教!!! 存储过程执行同步问题 public static long parseLong(String s, int radix)中的radix那位老大给解释一下? 菜鸟问题:怎么将作成的程序打包成"setup"exe可执行文件? 给个jdk 1.5的下载地址~ scjp求助,这道题应该选什么,以及原因,谢谢 来者有分 谢谢 我如何用JAVA才能实现文本打印功能? 有没有关闭连接还可以用的缓冲存储的ResultSet? 怎样跨越网络密码?
}else{
mm=mm-1;
if(mm<0){
mm=60+mm;
tt=tt-1;
}
}return在哪里?
try{
for(int j=0;j<a;j++){
s[0]=String.valueOf(tt)+":"+String.valueOf(mm);//得到时间
...循环作完,没有出错,而其中的if(rsm.next())都为false,此时方法没有返回值
{
s[0]=String.valueOf(tt)+":"+String.valueOf(mm);//得到时间
sqlm="select * from book."+clubno+"sj where (date="+teedate+" && time="+s[0]+")";
rsm=this.stmt.executeQuery(sqlm);
if(rsm.next())
{
return s;
break;
}
else
{
mm=mm-1;
if(mm<0)
{
mm=60+mm;
tt=tt-1;
}
}
//这里::if(j == a-1){return ??} }
if(rsm.next()){
return s;
break; //这里不是已经返回,并且跳出循环了吗?
}else{
mm=mm-1;
if(mm<0){
mm=60+mm;
tt=tt-1;
}
}
即如果for中所有条件只满足else呢
(即使实际不会)
break;不必
//打球时间与球道开球时间有偏差时的处理程序,例如预定7:00,但是实际球道时间流程为6:58和7:08
private String[] make_good_time(String teedate,String teetime,String clubno,int a){
String sqlm;
ResultSet rsm;
String[] r;
String[] s=new String[1];
int mm=0; //定义分钟
int tt=0; //定义小时
if (teetime.length()==4){ //当时间字符串为5:45时
tt=Integer.parseInt(teetime.substring(0,1)); //将字符形式的小时转换成int型
mm=Integer.parseInt(teetime.substring(2,4)); //将字符形式的分钟转换成int型
}
else { //当时间字符串为15:45时
tt=Integer.parseInt(teetime.substring(0,2)); //将字符形式的小时转换成int型
mm=Integer.parseInt(teetime.substring(3,5)); //将字符形式的分钟转换成int型
}
try{
for(int j=0;j<a;j++){ //a的类型是int,单位是分钟,这个for循环的用意是找到合适的时间
s[0]=String.valueOf(tt)+":"+String.valueOf(mm);//得到时间
sqlm="select * from book."+clubno+"sj where (date="+teedate+" && time="+s[0]+")";//得到sql语句
rsm=this.stmt.executeQuery(sqlm); //执行查询
if(rsm.next()){ //判断rsm.next(),ture则
return s; //返回时间
break; //中止for循环
}else{ //false,则处理时间,
mm=mm-1; //处理分钟,每运行一道for循环mm减1,也就是说时间向前移动1分钟
if(mm<0){ //当分钟为负时
mm=60+mm; //处理分钟
tt=tt-1; //处理小时
}//end if 这个if的用途是处理时间
}//end if
}//end for
}catch(SQLException e){//当执行完a遍后,rsm.next()仍然为false时
r=new String[1];
r[0]="数据出错";
return r;
}//end try
}//end make_good_time
...
try{
..
}catch(SQLException e){
r=new String[1];
r[0]="数据出错";
return r;
}
return null;
}