Java类不会编译

时间:2014-01-15 20:27:35

标签: java php loops

我非常喜欢编程,我试图将这个PHP算法转换为Java。

function isPrime($n)
{
$i = 2;

if ($n == 2) {
    return true;    
}

while ($i < $n) {
    if ($n % $i == 0) {
        return false;
    }
    $i++;
}

return true;
}
for ($i = 3; $i < 100; $i++) {
if (isPrime($i)) {
    echo $i;
}
}

到目前为止我唯一想到的就是这个。

public class Primtal {
public static boolean isPrime(int n) 
{
    int i = 2;

    if (n == 2) {
        return true;    
    } 
    while (i < n) {
        if ( n % i == 0) {
            return false;
        }
        i++;
    }

    return true;
}

for(int i = 3; i < 1000; i++){
    if (isPrime(i)) {
        System.out.print(i);
    }
}
}

我意识到这看起来很愚蠢,但我真的需要让它发挥作用。我认为问题主要在于for循环,因为我当前正在获取错误非法类型的开始。我不确定如何将其转换为Java,我将不胜感激任何帮助。

4 个答案:

答案 0 :(得分:4)

我相信你的代码的问题是你在for声明的中间放了一个class循环,这是不正确的 - 它需要在某个方法中。在这种情况下将它放在main()中似乎是合乎逻辑的,因此它在您运行程序时执行。也许是这样的:

public class Primtal
{
    public static boolean isPrime(int n) 
    {
        int i = 2;

        if(n == 2)
        {
            return true;    
        } 

        while(i < n)
        {
            if(n % i == 0)
            {
                return false;
            }

            i++;
        }

        return true;
    }

    public static void main(String[] args)
    {
        for(int i = 3; i < 1000; i++)
        {
            if(isPrime(i))
            {
                System.out.print(i);
            }
        }
    }
}

(注意在代码的后半部分添加了public static void main(String[] args)。)

Oracle有关于如何构建Java程序以及该语言的其他基础知识的官方教程。您可以找到与main方法here相关的方法。或者,从头开始,完整的教程开始here

答案 1 :(得分:2)

你不能写for循环

for(int i = 3; i < 1000; i++){
    if (isPrime(i)) {
        System.out.print(i);
    }
}

直接在class内。

我相信你想要的是拥有一个main方法,你可以在其中for循环

答案 2 :(得分:1)

你的for循环需要在某种方法中,所以你可以把它放在main方法中:

public class Primtal {

    public static void main(String [] args)
    {                
        for(int i = 3; i < 1000; i++)
        {
            if (isPrime(i)) {
            System.out.print(i);
        }
    }

    public static boolean isPrime(int n) 
    {
        int i = 2;

        if (n == 2) {
            return true;    
        } 
        while (i < n) {
            if ( n % i == 0) {
                return false;
            }
            i++;
        }

        return true;
    }

}

答案 3 :(得分:1)

问题是你的for循环不在方法中。用main方法将其括起来。

public static void main(String[] args) {
   // Your for loop here
}

此外,将print更改为println,否则所有数字将在一行上连接在一起。