java编译报错:缺少返回语句

编译错误

  1. 缺少返回语句

    • 编译器不负责运行程序,只负责检查语法, 编译器觉得:以下这行代码可能会执行,当然也可能不会执行。

    编译器为了确保程序不出现任何异常,所以编译器说:缺少返回语句!!

    /*
    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 循环当中!