我只是在学习java并且在编写使用Eratosthenes筛子的程序时遇到了问题。编译错误在代码下面。非常感谢任何有关此问题的帮助。非常感谢。
public class Main {
public static void main(String[] args) {
int[] arr = new int[1000000];
for (int i = 0; i < 1000000; ++i)
{
arr[i] = i;
}
sieve(arr);
for (int elem :arr)
{
System.out.println(elem);
}
}
public static void sieve(int[] array)
{
int n = 0;
for (int i = 2; i < 1000; ++i)
{
if (arr[i] != 0)
{
for (int j = (int)Math.pow(i, 2) + n * i; j < 1000000; ++j)
{
do
{
arr[j] = 0;
n++;
}while ( n < 1000000);
}
}
}
}
}
这是编译错误 javac project3.java
project3.java:23: error: cannot find symbol
if (arr[i] != 0) {
^
symbol: variable arr
location: class project3
project3.java:28: error: cannot find symbol
arr[j] = 0;
^
symbol: variable arr
location: class project3
2 errors
**我把它编译为class project3
答案 0 :(得分:1)
您有两个静态方法,第一个是定义数组arr
,但未在第二个方法中定义。你可能想在第23和28行使用array
(这是筛子的参数)。
答案 1 :(得分:0)
将arr[i]
替换为array[i]
中的sieve()
。