2021-01-20

Java 编译错误:缺少返回语句

示例:

import java.util.;
import java.io.
;

public class tt {
public static void main(String[] args) {
foo();
}

public static String foo() {
    int i=0;
    while(i<10) {
        return "ggg";
    }
}

}

该函数编译便会报错:缺少返回语句。尽管看起来(i<10)是肯定为真的,但是编译器不会把i=0带进去算,所以它觉得foo函数有可能无返回值(即while后条件为假的时候)。

同理,把while改成if,编译报同样的错误。

把while(i<10)改为while(true)后,不再报错。

但是C就随意得多,跟Java比起来以下如此不确定的代码也能正常编译运行:

#include <stdlib.h>
#include <stdio.h>

int main()
{
int a=foo();
printf("%d\n",a);
return 0;
}

int foo()
{
int i=0;
while(i++<10)
{
if(i>5) return 5;
else return 4;
}
}

再举个java例子:

这么写会提示缺少返回语句,

public static boolean has3(int[] a) {
for(int i=0; i<a.length; ++i) {
if (a[i]==3)
return true;
else
return false;
}
}
这么写在C里是可以的,但是java的编译器无法确定你是否存在返回值,所以必须要给java确确定定的返回值。

稍稍改动一下即可:

import java.util.;
import java.io.
;

public class has {
public static void main(String[] args) {
int[] b = {1,2,3,4,5};
int[] c = {1,2,4,5};
System.out.println(has3(b));
System.out.println(has3(c ));
}

public static boolean has3(int[] a) {
    for(int i=0; i<a.length; ++i) {
        if (a[i]==3)   //仅有a[i]等于3时执行
            return true; //直接返回true 
        }
    return false; //倘若前面没有执行if语句 则返回false。确定的返回值
}

}
原文转载:https://www.cnblogs.com/duanguyuan/p/3643661.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值