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;
    }
}

 

稍稍改动一下即可:

复制代码
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)
                return true;
            }
        return false;
    }
}
复制代码

 

  

 

posted @   duanguyuan  阅读(9093)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示