java编译报错:缺少返回语句
编译错误
-
缺少返回语句
- 编译器不负责运行程序,只负责检查语法, 编译器觉得:以下这行代码可能会执行,当然也可能不会执行。
编译器为了确保程序不出现任何异常,所以编译器说:缺少返回语句!!
/* 2、编写一个方法,输出大于某个正整数 n 的最小的质数。 思考:这个方法应该起什么名字,这个方法的形参是什么,方法的返回值类型是什么。 例如:这个正整数是 1, 大于它的最小质数就是 3 */ public class FangFa{ public static void main(String[] args){ java.util.Scanner s = new java.util.Scanner(System.in); int num = s.nextInt(); int result = prime(num); System.out.println(result); }// n = 1; 最小质数就是 2 public static int prime(int n){ // 怎样判断大于某个整数的最小质数 for(int i = n+1; i <= 10000; i++){// i= 2; for(int j = 2; j < i; j++){ if(i%j==0){ break; // 当前这个数不是质数 } } return i; // 编译报错:缺少返回语句,说明这条语句可能执行也可能不执行。-- 不是质数跳出循环,将合数返回了, // 是质数也返回,所以这里错了,应该改用 while 循环来写,同时 return 语句也不能放在 for 循环当中。 } } }
- 编译报错:在 21 行,缺少返回语句,这是什么原因呢?首先这个程序是错误的,我们暂且不讨论,就单单讨论为什么缺少返回语句,导致该条报错的原因就是:说明这条语句可能执行也可能不执行。那存在这种情况吗?答案是存在的,因为 for 循环,当条件表达式为 false 的时候,return 值;这条语句就不会执行。建议:return 语句不要放在 for 循环当中!