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

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

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

9个回答

问题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 混淆)

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

斐波拉契数列问题:

****问题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));
}

}

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

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

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

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

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

你在最外层加一个return 0;

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐