小羊也疯狂
2016-12-03 10:23
采纳率: 88.4%
浏览 3.4k
已采纳

Java 方法返回值类型 类型转换

图片说明
图片说明
第5行一直报错 说要返回long 类型的值

问题1:我认为我方法中的三种情况下的返回值都是long 不知道出了什么错
问题2:如果我在返回值为long的方法里写
renturn 1 ; 这个 1 会被自动转化为long类型吗
问题3 : 这么写可不可以
return (long )1;

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

9条回答 默认 最新

  • yangqinghua1992 2016-12-04 16:54
    已采纳

    问题1:方法 F 中有3个 if 语句,你的返回值都建立在 if 条件成立时返回,但可能这三个条件都不成立,那就没有返回值了,所以报错。

    问题2:return 1; 是可以的,Java会自动的将表示范围小的数据类型 自动 提示为大的数据类,这叫做 "自动类型提升" 或 "隐式转换"

    问题3:return (long) 1; 没有问题, 更好的写法是 return 1L,注意 1 后面有一个大写字母 L ,这叫做给数字加 "后缀",但在你这个方法里不必这样,返回 1 即可,参见问题2解答。

    在Java中,整数默认是int类型,小数默认是double类型,如果你想告诉 Java虚拟机这个 1 是 long 类型,只需要在数字后面加上 字母L (不区分大小写,但建议大写,因为小写的L 容易与数字 1 混淆)

    点赞 打赏 评论
  • 和小胖 2016-12-03 10:36

    这个不是返回值类型的问题。你这个return都是写在if里面的呀,如果你的三个if都走不进去,那么岂不是没有返回值了?有返回值的方法一般都会在方法末尾return一个默认值。那样就会保证该方法永远都有返回值。

    点赞 打赏 评论
  • qq_36912570 2016-12-03 10:38

    虽然我只是个学生哈,我说说我的看法。
    问题1:你还缺少一个返回值,就是所有的if语句都不满足的情况的一个返回值。这是必须有的,否则程序报错。
    问题2:会
    问题2:既然int 能自动转换为long类型了,就不用这么写了,我觉得需要强制转换的情况下可以写。

    点赞 打赏 评论
  • 毕小宝 2016-12-03 12:00

    返回值只能是同一种类型,其他的分支返回值直接改成long

    点赞 打赏 评论
  • ye_nianfeng 2016-12-03 14:34

    斐波拉契数列问题:

    ****问题1**.** 方法F()缺少返回值,如果if都不满足时的返回值,应该在方法F() 最后一行补上一个return 1或return 100或return N。
    问题2**. 会
    问题3 可以,但是没必要

    public class test{
    public static long F(long N){
    if(N>=2){
    long[] F=new long [(int) N+1];
    F[0]=0;
    F[1]=1;
    for(int i=2;i<=N;i++)

                F[i]=F[i-1]+F[i-2];
            return F[(int)N];
        }
        if(N==1) return ((new Integer(1).longValue()));
        if(N==0) return ((new Integer(0).longValue()));
        return 100;
    }
    
    
    
    
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        for(long N=0;N<10;N++)
            System.out.println(N+","+F(N));
    }
    

    }

    点赞 打赏 评论
  • xsf18 2016-12-04 02:36

    问题1:缺少一个return语句
    问题2和问题3 int可以自动向上转型位long,所以 直接写 return 1; 你写的太麻烦

    点赞 打赏 评论
  • hope_courage 2016-12-04 02:53

    一楼已经点出了问题所在,若for循环与if的判断条件均不满足便缺少了返回值

    点赞 打赏 评论
  • 玛珈山客 2016-12-04 03:34

    不要怀疑,报错的意思就是说你没有返回值,因为你不能把返回值都写到if语句里面,如果想要这么写,也应该是定义一个返回值变量,在if语句里面赋值,最后在结尾返回这个变量

    点赞 打赏 评论
  • dsxjinzhiqiang 2016-12-04 09:35

    你在最外层加一个return 0;

    点赞 打赏 评论

相关推荐 更多相似问题