2013-02-28 93 views
0
public static boolean prime(int n){ 
    if(n<=1) 
     return false; 
    int z=2; 
    if(n==2) 
     return true; 
    while(z<Math.sqrt(n)){ 
     if(z mod n==0) 
      return false; 
     z++; 
    } 
    return true; 
} 

任何線索我的代碼有什麼問題? 我收到7個錯誤「類,接口,或枚舉」期待的......多錯誤:類,接口或枚舉預計

+0

關於你的算法,如果你從z = 3開始並且在while循環中做z + = 2,它會運行的更快。 – LaGrandMere 2013-02-28 14:53:30

回答

0

「類,接口,或枚舉預期所取代「錯誤主要是由於缺少{}大括號。徹底檢查你的程序。

如果上面提到的是你所有的代碼,那麼你應該把它封裝在一個類中。 不要忘了寫main()了。

java中沒有'mod'關鍵字。使用'%'代替。

import java.util.*; 

class Prime 
{ 

public ...........main(.... args[]) 

{ 
//accept integer 

if(prime(n))//calling prime() 
.. 
} 

然後你的方法.. 乾杯!

2

如果這是所有的代碼,你需要將其封裝在一個class的錯誤表示:)

其次,Java中沒有關鍵字mod,取而代之的是%。把2一起:

public class MyPrimeTest { 

    public static void main(String[] args) { 
     boolean primeCheck = prime(43); 
     ... 
    } 

    public static boolean prime(int n) { 
     if (n <= 1) { 
      return false; 
     } 
     int z = 2; 
     if (n == 2) { 
      return true; 
     } 
     while (z < Math.sqrt(n)) { 
      if (z % n == 0) { 
       return false; 
      } 
      z++; 
     } 

     return true; 
    } 
} 
4

你不能執行獨立的代碼,一切都必須存在於類,接口或枚舉。

這需要住在一個班級內。這應該在一個名爲MyClass.java

E.g.

public class MyClass { 

    public static boolean prime(int n){ 
     if(n<=1) 
      return false; 
     int z=2; 
     if(n==2) 
      return true; 
     while(z<Math.sqrt(n)){ 
      if(z mod n==0) 
       return false; 
      z++; 
     } 
    return true; 

    } 

} 

然後它可以通過運行MyClass.prime(7);

正如其他人所說調用,MOD也是無效的關鍵字,應由%操作

+0

但是** mod **是什麼? – Maroun 2013-02-28 14:48:39

+0

這也是錯誤的,但顯然不是他得到的錯誤。閱讀問題標題 – cowls 2013-02-28 14:49:32

+0

你是對的,+1。 – Maroun 2013-02-28 14:50:20