2014-01-15 103 views
-1

当谈到编程和im试图将此PHP算法转换为Java时,我相当新手。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循环,因为im当前正在获取错误非法类型的开始。我不知道如何将其转换为Java,我将不胜感激任何帮助。

+0

那'for'循环需要在一个方法或主力。 –

+0

仅供参考,以后的问题会丢失无关代码(本例中的php)。问题真的是“我的java类不会编译或运行”。该PHP代码只是混淆了这个问题:) –

回答

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)

甲骨文对Java程序需要如何构建官方教程,以及语言的其他基础知识。您可以找到与main方法here相关的那一个。或者,从一开始,完整教程开始here

1

您的循环必须是某种形式的方法中,这样你就可以把它的主要方法:

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; 
    } 

} 
1

的问题是,你的for循环不在方法。将其包含在main方法中。

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

此外,改变printprintln,否则所有的号码将出现在同一行连接在一起。

2

你不能写for

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

直接在class内。

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