无法从静态上下文引用Java非静态方法

时间:2014-04-11 03:21:30

标签: java

每当我尝试编译程序时,我都会收到此错误"非静态方法primeNum(int)无法从静态上下文引用#34;。

在这个程序中,我必须编写一个方法来确定一个数字是否为素数,并在一个确定1到100之间所有素数的应用程序中使用此方法。

这是我的代码:

import java.io.*;
import java.util.Scanner;
public class Program7

{
public static void main (String args[])
{
Scanner scanner = new Scanner(System.in);

int x, r=0, prime;
int num[]= new int[100];

while (r<100){
  prime=primeNum(x);
  System.out.println(prime);
  r++;
  }
}

public int primeNum (int x){

for(i=1; i<=x; i++){
  if(x%i==0)
  count++;
  return x;
  }
  if(count==2)
  System.out.println();
  }
}

1 个答案:

答案 0 :(得分:0)

是的,您无法从静态上下文中调用非静态方法。 您有两种选择:

声明primeNum()静态

static int primeNum (int x){

创建一个primeNum实例并通过该引用调用primeNum():

PrimeNumClass primeNumObj = new PrimeNumClass();
int returnVal = primeNumObj.primeNum(x);