else(没有if只有一个else)后面直接写return报错,如何解决?

public String biDui (String c, String r) {
//把String类型转成int类型
int cc=Integer.parseInt(c);
int rr=Integer.parseInt(r);
if(cc>rr) {
System.out.println("大了");
}else if(cc<rr) {
System.out.println("小了");
}else{
return "对了";
}

}

报错内容是:This method must return a result of type String
//他让我非得在最后一行写一个返回值我不是在else后面写了吗,是我这个版本的问题吗,我这个是1.8的别的版本我也试了也报错。
//我现在不是说为了完成这个需求,而是想不明白else后面怎么就不能写return了。

这个报错的意思是函数必须返回一个字符串,虽然最后的else里面有返回字符串,但是前面两个分支里面却没有返回字符串,也就是说,如果程序走的是前面两个分支的话,是没有返回值的,这是错误的,可以这么改:

public String biDui (String c, String r) {
    //把String类型转成int类型
    int cc=Integer.parseInt(c);
    int rr=Integer.parseInt(r);
    if(cc>rr) {
         System.out.println("大了");
         return "大了";
    }else if(cc<rr) {
         System.out.println("小了");
         return "小了";
    }
    else{
         return "对了";
    }
}

你的写法在编译时会报错,缺少返回语句,这是基本的语法格式(条件判断有返回语句,必须所有的情况都有返回),要注意!!!
当然你只想写一个返回语句,那这个返回语句就不要放在条件判断里面。


    public String biDui (String c, String r) {
        //把String类型转成int类型
        int cc = Integer.parseInt(c);
        int rr = Integer.parseInt(r);
        if (cc > rr) {
            System.out.println("大了");
            return "错了";
        } else if (cc < rr) {
            System.out.println("小了");
            return "错了";
        } else {
            return "对了";
        }
    }

若有帮助,谢谢采纳~

原因
三条判断分支
1、如果是前两条的话,会导致没有return 的返回数据,所以可以在末尾加上一个return 任意字符串;
2、如果是第三条的话,是正常的,有字符串的返回数据了


解决方法
在末尾加个return "没对"即可。

public String biDui (String c, String r) {
        //把String类型转成int类型
        int cc = Integer.parseInt(c);
        int rr = Integer.parseInt(r);
        if (cc > rr) {
            System.out.println("大了");
        } else if (cc < rr) {
            System.out.println("小了");
        } else {
            return "对了";
        }
        return "没对";
    }

如下没有返回值,所以不对。给你做了改正


if(cc>rr) {
System.out.println("大了");
return "大了";
}else if(cc<rr) {
System.out.println("小了");
return "小了";

函数可能没有返回值,在最后return一个默认值就ok了。

可以的, 你在最后返回

return "错了";

就行了, 需要返回String类型

你定义了一个public String biDui公共类如图:

img


所以必须要有一个返回值,你的条件语句只有最后一个else 有Str返回值,其他的没有不就错了吗?这样懂了了没,采纳吧

编译语法决定的,程序有几个出口,就对应几个return.

public String biDui (String c, String r) {
//把String类型转成int类型
int cc=Integer.parseInt(c);
int rr=Integer.parseInt(r);
if(cc>rr) {
System.out.println("大了");
return "错了";
}else if(cc<rr) {
System.out.println("小了");
return "错了";
}else {
return "对了";
}
}



public String biDui (String c, String r) {
//把String类型转成int类型
int cc=Integer.parseInt(c);
int rr=Integer.parseInt(r);
if(cc>rr) {
System.out.println("大了");
}else if(cc<rr) {
System.out.println("小了");
}else{
return "对了";
}
return “”;
}

这个写法,每个分支都需要有返回值才行。

else匹配的是上面的if语句,在else里面的返回,他只是局部的,而你的方法他本身是需要一个返回的语句

public String biDui (String c, String r) {
        //把String类型转成int类型
        int cc = Integer.parseInt(c);
        int rr = Integer.parseInt(r);
        if (cc > rr) {
            System.out.println("大了");
        } else if (cc < rr) {
            System.out.println("小了");
        } else {
            return "对了";
        }
        return "没对";
    }