java bluej关于缺少返回语句

java bluej关于缺少返回语句,java,bluej,Java,Bluej,所以,当我编译它时,它会说缺少返回是必需的 import java.util.*; class p19 { public static int isPDA(int n) { Scanner ob=new Scanner(System.in); int i,s=0; for(i=1;i<n;i++) { if(n%i==0) { s=

所以,当我编译它时,它会说缺少返回是必需的

import java.util.*;
class p19
{
    public static int isPDA(int n)
    {
        Scanner ob=new Scanner(System.in);
        int i,s=0;
        for(i=1;i<n;i++)
        {
            if(n%i==0)
            {
                s=s+i;
            }
            if(s==n)
            {
                return 0;
            }
            if(s<n)
            {
                return -1;
            }
            if(s>n)
            {
                return +1;
            }
        }
    }
}
import java.util.*;
p19类
{
公共静态int isPDA(int n)
{
扫描器ob=新扫描器(System.in);
int i,s=0;

for(i=1;i
isPDA
是一种方法,如果满足
中的哪个条件,但控制流语句阻止了返回,则必须返回一个整数
…尝试组织您的想法,并尝试以下方式:

   if(s==n)
    {
        return 0;
    }
    else if(s<n)
    {
        return -1;
    }
    else
    {
        return +1;
    }
if(s==n)
{
返回0;
}

否则,如果(s要扩展@jipr311所说的,如果参数“n”是要建立在@jipr311和@DBug所说的基础上,用外行的话来说,编译器需要确保无论在条件语句中发生什么,该方法都会返回一些东西。这意味着在某种程度上,编译器不关心“if”是什么语句是,只是在没有执行任何if语句的情况下(如果程序设计正确,可能不会发生这种情况),会返回一些内容

正如@DBug所说,一种解决方法是在if中添加一个“else”语句。这可以确保编译器以某种方式执行“if”条件下的return语句,或者执行“else”条件下的return语句。您当前的代码无法向编译器保证这类事情