Java 解释一个解决方案:不能从静态上下文引用非静态方法isPrime(int)
我的计划是:Java 解释一个解决方案:不能从静态上下文引用非静态方法isPrime(int),java,Java,我的计划是: 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[]
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");
}
}
}
import java.io.*;
公共类素数生成器
{
公共int iPrime(int x)
{
int标志=1;
for(int i=2;imain
是一个静态方法,而isPrime
被声明为一个实例方法,因此您不能像错误消息所建议的那样从静态上下文调用它
由于isPrime
是上下文无关的,您只需将其声明为static
:
public static boolean isPrime(int x)
另外,isPrime
应该返回一个boolean
,而不是int
使isPrime成为静态的,正如错误消息所提示的不要对我们大喊大叫一样,伙计。:)google不能从静态上下文引用
的可能副本。另外,isPrime应该使用一个从2到sqrt(x)的循环。