2014-06-20 57 views
-3

我的計劃是:解釋解決:非靜態方法isPrime(INT)不能從靜態CONTEX引用

import java.io.*; 
public class PrimeGenerator 
{ 

public int isPrime(int x) 
{ 
    int flag=1; 
    for(int i=2;i<x;i++) 
     { 
      if(x%i==0) 
      flag=0; 
     } 
    return flag; 
} 

public static void main(String args[])throws IOException 
{ 
    DataInputStream in =new DataInputStream(System.in); 
    int t,p1,p2; 
    t=Integer.parseInt(in.readLine()); 
    for(int i=1;i<=t;i++) 
    { 
     p1=Integer.parseInt(in.readLine()); 
     p2=Integer.parseInt(in.readLine()); 
     for(int j=p1;j<=p2;j++) 
     { 
      if(isPrime(j)==1) 
      { 
       System.out.println(j); 
      } 
     } 
     System.out.println("\n"); 
    } 
} 
} 
+0

讓isPrime靜態的,因爲錯誤信息顯示 – Philippe

+1

別吼我們,夥計。 :) –

+1

谷歌'不能從靜態上下文引用' – Kent

回答

2

main是一個靜態方法,而isPrime被聲明爲實例方法,所以你不能只要根據錯誤消息的建議從靜態上下文中調用它。

由於isPrime是上下文,你可以簡單地把它聲明爲static

public static boolean isPrime(int x) 

此外,isPrime應返回boolean,不是int

+0

另一方面,isPrime應該使用從2到sqrt(x)的循環, 。 –

相關問題