我使用的是学校作业的要求"这个"在以下程序中。但是,我无法弄明白我可以把它放在哪里。我不断得到一个非静态变量,这个变量不能从静态上下文中引用"错误。
import java.util.Scanner;
public class PrimeNumber
{
public static void main(String args[])
{
System.out.println("Enter the upper limit for the prime numbers computation: ");
int upperLimit = new Scanner(System.in).nextInt();
int count = 0;
for(int number = 2; number<=upperLimit; number++)
{
if(isPrime(number))
{
System.out.println(number);
count++;
}
}
System.out.println("Number of primes generated: " + count);
}
public static boolean isPrime(int number)
{
for(int i=2; i<number; i++)
{
if(number%i == 0)
{
return false;
}
}
return true;
}
}
答案 0 :(得分:1)
Java关键字this
是指调用实例方法的类实例。静态方法对于其类是通用的,因此您不能从其中引用任何实例(非静态)变量。您只能从实例方法中访问实例变量,例如this
,即未定义为static
的方法。
因此,您需要创建一个实例方法(在您的类中没有),以便使用this
。
答案 1 :(得分:0)
This
只不过是对调用该方法的对象的引用。另一方面,Static
方法可以在没有任何类的实例的情况下运行,因此它们不能引用任何对象。这就是您无法在this
方法中使用static
的原因。如果您真的需要this
,则必须从函数中删除static
个关键字,并在这些函数中使用实例变量。
答案 2 :(得分:0)
public class PrimeNumber
{
public int count = 0;
public int upperLimit;
public static void main(String args[])
{
PrimeNumber pn = new PrimeNumber();
System.out.println("Enter the upper limit for the prime numbers computation: ");
pn.upperLimit = new Scanner(System.in).nextInt();
pn.doCheck();
System.out.println("Number of primes generated: " + pn.count);
}
public void doCheck() {
for (int number = 2; number <= this.upperLimit; number++)
{
if (this.isPrime(number))
{
System.out.println(number);
count++;
}
}
}
public boolean isPrime(int number)
{
for (int i = 2; i < number; i++)
{
if (number % i == 0)
{
return false;
}
}
return true;
}
}