0

我正在学习方法,并试图编写基本上告诉数字是否为素数的代码。但是,我一直遇到错误:

error: cannot find symbol
                return(isPrime);
                       ^
error: illegal start of type
                return(isPrime);

这是我当前的代码(我希望我正确使用该方法):

import java.util.Scanner;

public class DoublePalindromicPrimes{
    public static void main(String args[]){

        Scanner in= new Scanner(System.in);
        System.out.println("Please enter a number:");
        int n = in.nextInt();

        //prime(n);
        boolean resultPrime = prime(n);
        if (resultPrime){
            System.out.println("This is a prime");
        }
        else {
            System.out.println("This is not a prime");
        }
    }

    public static boolean prime(int x){
        for (int i=2;i<x;i++){
        boolean isPrime;
            if (x%i==0){
                isPrime=false;
            }
            else{
                isPrime=true;
            }
        }
        return isPrime;
    }
}

任何帮助表示赞赏!

4

4 回答 4

4
public static boolean isPrime(int x)
{   
    if(x > 2) {
        if(x%2 == 0) {
            return false;
        } else {
            int sqrt = (int)(Math.sqrt(x));
            for(int i=3;i<=sqrt;i+=2) {
                if(x%i == 0) {
                     return false;
                }
            }
        }
        return true;
    } else if(x==2) {
        return true;
    } else { //1, 0, and negatives
        return false;
    }
}
于 2013-10-29T02:44:29.143 回答
3

将其更改为

return isPrime;

注意空格并在isPrimefor 循环中声明

于 2013-10-29T02:42:12.940 回答
2
public static boolean prime(int x) //throws InvalidNumberException
{
    if (x <= 0)
    {
        //throw new InvalidNumberException("The number is invalid");
    }
    int squareRoot = (int)(Math.sqrt(x));
    for (int i = 2; i <= squareRoot; i++)
    {
        if (x % i == 0)
        {
            return false;
        }
    }
    return true;
}

这是一个优化的主要验证器。

于 2013-10-29T05:05:02.303 回答
2

isPrime在循环中声明,因此return语句看不到它。将其移出循环。

于 2013-10-29T02:42:43.960 回答