int comparewith(String s1,String s2,int num){
s1 = new String();
s2 = new String();
int number;
for(int i=0;i<num;i++)
{
if(s1.charAt(i)>s2.charAt(i))
{
number = 1;
break;
}
else if(s1.charAt(i)<s2.charAt(i))
{
number = -1;
break;

}
else
{
number = 0;
break;
}
return number;
}
}
why it registers me :the method must be return a result of type int ?

解决方案 »

  1.   

    int comparewith(String s1,String s2,int num){
    s1 = new String();
    s2 = new String();
    int number=0;
    for(int i=0;i <num;i++)
    {
    if(s1.charAt(i)>s2.charAt(i))
    {
    number = 1;
    break;
    }
    else if(s1.charAt(i) <s2.charAt(i))
    {
    number = -1;
    break;}
    else
    {
    number = 0;
    break;
    }
    }
    return number;
      

  2.   


    //这么改虽然没出编译出错,但是你这程序有问题!
    static int comparewith(String s1,String s2,int num){ 
    s1 = new String(); //这个地方有问题!
    s2 = new String(); 
    int number=0; 
    for(int i=0;i <num;i++) { 
    if(s1.charAt(i)>s2.charAt(i)) { //这里也有问题!

    number = 1; 
    break; 
    } else if(s1.charAt(i) <s2.charAt(i)) { 
    number = -1; 
    break; 

    else 

    number = 0; 
    break; 



    return number; //改了这里
    }
      

  3.   

    把return number; 这句放到for循环的外面。
      

  4.   

    public static int comparewith(String s1,String s2,int num){ 
            /**
             *String 是一个类,当对象s1传过来以后,你又new了一个对象导致他的内容是空的啊!报出
               *StringIndexOutOfBoundsException异常。简单说就是s1 和s2永远是空值。
               */
            //s1 = new String();  
            //s2 = new String(); 
            int number=0; 
            for(int i=0;i < num -1;i++) {         
    if(s1.charAt(i)>s2.charAt(i)) { 

    number = 1; 
    break; 
    } else if(s1.charAt(i) <s2.charAt(i)) {         
    number = -1; 
    break; 

    else 

    number = 0; 
    break; 



    return number; //返回要在最后啊
        }
      

  5.   

    而且,重复实现String类已经实现的功能的意义?
      

  6.   

    在循环中不能直接放置return,那个错误意思是说你的方法没有返回值,如果要在循环中加return的话,在循环中应该加一个判断,if()(return x)else(){retrun x} ,这种形式是可以的。
      

  7.   


    int comparewith(String s1,String s2,int num){ 
    //s1 = new String(); 
    //s2 = new String(); 
    int number; 
    for(int i=0;i <num;i++) 

    if(s1.charAt(i)>s2.charAt(i)) 

    number = 1; 
    break; 

    else if(s1.charAt(i) <s2.charAt(i)) 

    number = -1; 
    break; } 
    else 

    number = 0; 
    break; 


    return number; 
      

  8.   

    每一个break前面都要有一个return number;
      

  9.   

    如果只是把return number;改放到循环外面的话 返回的只是循环最后一次的结果,显然不符合lz的需求,所以要在每一个break前面加一个return number;就对了。
      

  10.   

    return number 位置不对撒
      

  11.   

    把retrun放在最后,不要重新new String 就可以了
      

  12.   

    return 应放在for语句外层! 但是你着代码只比较第一个字符就会结束!没有比较整个字符串!
      

  13.   


    public class StringCompare {
    public static int compareWith(String s1,String s2,int num){
    int value = 0;
    for(int i=0;i<num;i++){
    if(s1.charAt(i)>s2.charAt(i)){
    value = 1;
    return value;
    }
    else if(s1.charAt(i)<s2.charAt(i)){
    value = -1;
    return value;
    }
    else
    return value;
    }
    return s1.compareTo(s2);
    }
    public static void main(String[] args){
    System.out.println(compareWith("cheng","csdn",4));
    }
    }