示例:
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#include 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
稍稍改动一下即可:
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