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;

    }

}

 

  

 

你可能感兴趣的:(java)