IsPrime? - 缺少退货声明

时间:2015-03-06 09:28:44

标签: java

我在编译时收到错误的返回语句(32)错误,我不确定原因。有什么提示吗?

我认为退货状态是我的退货声明。

import java.util.Scanner;

public class PrimeChecker
{
    public static void main(String[] args)
    {
    int number;
    Scanner keyboard = new Scanner(System.in);

    System.out.print("Enter a number: ");
    number = keyboard.nextInt();

    if (isPrime(number))
        System.out.println("Your number is not prime.");
    else
        System.out.println("Your number is prime.");
    }

    public static boolean isPrime(int number)
    {       

    for (int i = 2; i < number; i++)
    {
        boolean status;

        if (number % i == 0)
            status = true;
        else
            status = false;
        return status;
    }
    }

}

5 个答案:

答案 0 :(得分:2)

你必须在循环后添加一个return语句:

public static boolean isPrime(int number)
    {       

    for (int i = 2; i < number; i++)
    {
        boolean status;

        if (number % i == 0)
            status = true;
        else
            status = false;
        return status;
    }
    return false;
    }

因为如果你的循环永远不会执行,该方法必须返回一个值。

但是你的循环在第一个值之后就结束了,因为你会在每种情况下都返回。

答案 1 :(得分:0)

最后添加一个错误的回报。因为如果你的number小于2,那么就不会有效,所以你应该从for块中得到一个return语句

public static boolean isPrime(int number)
{       

for (int i = 2; i < number; i++)
{
    boolean status;

    if (number % i == 0)
        status = true;
    else
        status = false;
    return status;
}
if(number==2){
   return true;
}
return false
}

答案 2 :(得分:0)

您需要在函数结尾处放置return语句。 您已在for loop中添加了回报。

public static boolean isPrime(int number) {
    for (int i = 2; i < number; i++){
        boolean status;

        if (number % i == 0)
            status = true;
        else
            status = false;
        return status;
     }
     return false;
}

答案 3 :(得分:0)

首先,此函数不是素数检查器:算法将在第一次迭代后完成。当且仅当i==number&&number%i==0时,此函数才是素数检查器。从循环中提取status变量并将其返回值放在函数的末尾。保留在mem中:全数扫描无效。

答案 4 :(得分:0)

正如其他人已经指出的那样,编译错误的原因是因为执行代码可能会到达函数的末尾,而没有返回语句。

另一方面,我不认为该方法的逻辑是正确的。它不应该看起来像这样吗?

public static boolean isPrime( int number )
{
    if ( number < 2 ) return false;

    for ( int i = 2; i < number; i++ )
    {
        if ( number % i == 0 ) return false;
    }
    return true;
}