返回时简单的Java方法错误

时间:2013-10-29 02:41:09

标签: java

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

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 个答案:

答案 0 :(得分: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;
    }
}

答案 1 :(得分:3)

将其更改为

return isPrime;

注意空格并从isPrime for for循环

中声明

答案 2 :(得分:2)

您在循环中声明了isPrime,因此return语句无法看到它。把它移到循环外面。

答案 3 :(得分: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;
}

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