class  SubStr{  
             
           public  static  String  sub(String  src,  int  num){  
                         
                       char[]  c  =  src.toCharArray();  
                       int  i  =  0,  n  =  0;  
                       for(  ;  n  <=  num;  i++){  
                                   if(c[i]  >  128)  
                                       n  +=  2;  
                                     
                                   else    
                                             n++;  
                                     
                                   if(n  ==  num)  
                                       return  new  String(c,  0,  i+1);  
                                   else  if(n  -  num  ==  1)  
                                       return  new  String(c,  0,  i);  
                       }//在这里提示缺少返回值!!!!!!!!!!!!!!不明白.  
                         
                         
           }              
           public  static  void  main(String[]  args){  
                         
                       System.out.println(sub("电脑a的dsfdfi",  6));  
                                                 
           }  
             
}

解决方案 »

  1.   

    if(n  ==  num)  
    return  new  String(c,  0,  i+1);  
    else  if(n  -  num  ==  1)  
    return  new  String(c,  0,  i);
    else ......    少了个else
      

  2.   

    一楼说个解决方法呀!!!
    to二楼,我加上else还是不行啊!!!
      

  3.   


    class  SubStr{  
                 
               public  static  String  sub(String  src,  int  num){  
                             
                           char[]  c  =  src.toCharArray();  
                           int  i  =  0,  n  =  0;  
                           String szRet = null;
                           for(  ;  n  <=  num;  i++){  
                                       if(c[i]  >  128)  
                                           n  +=  2;  
                                         
                                       else    
                                                 n++;  
                                         
                                       if(n  ==  num)  
                                           szRet =  new  String(c,  0,  i+1);  
                                       else  if(n  -  num  ==  1)  
                                           szRet =  new  String(c,  0,  i);  
                           }
                           
                           return szRet; 
                             
               }              
               public  static  void  main(String[]  args){  
                             
                           System.out.println(sub("电脑a的dsfdfi",  6));  
                                                     
               }  
                 
    }
      

  4.   

    当然缺了,如果for一次也没有循环,就不能执行for里边的return了,所以for外边应该加个return。虽然有的时候for是一定会执行的,可是编译器可不知道。