else{                  mm=mm-1;
                    if(mm<0){
                        mm=60+mm;
                        tt=tt-1;
                    }
 就是没返回值呀

解决方案 »

  1.   


                    }else{
                        mm=mm-1;
                        if(mm<0){
                            mm=60+mm;
                            tt=tt-1;
                        }
                    }return在哪里?
      

  2.   

    少考虑了一个分支
    try{
                for(int j=0;j<a;j++){
                    s[0]=String.valueOf(tt)+":"+String.valueOf(mm);//得到时间
    ...循环作完,没有出错,而其中的if(rsm.next())都为false,此时方法没有返回值
      

  3.   

    如果程序正常结束,即try中的循环全部完成,没有出现的rsm.next()的情况下,函数没有返回值,在try的最后加上return null;
      

  4.   

    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 ??}            }
      

  5.   


    if(rsm.next()){
          return s;        
          break;           //这里不是已经返回,并且跳出循环了吗?
    }else{
          mm=mm-1;
          if(mm<0){
               mm=60+mm;
               tt=tt-1;
          }
    }
      

  6.   

    看gularess(无吃哪拉) 说的
    即如果for中所有条件只满足else呢
    (即使实际不会)
      

  7.   

    还有,return s; 就行了       
          break;不必
      

  8.   

    最好能在最后加一个return语句,这样就可以有一个默认的返回值了。即使在前面的分支中不返回,也不会报错。
      

  9.   

    可能开始我说的不太清楚,现在我把这个流程在说一遍
    //打球时间与球道开球时间有偏差时的处理程序,例如预定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
      

  10.   

    当 rem.next() 返回 false 时,你没有返回值.
      

  11.   

    难道它就不执行for循环了吗?
      

  12.   

    在最后加上返回值,可以为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;
        }
      

  13.   

    问题是编译程序认为 有可能 所有循环中的条件都是   !rsm.next()