이 코드를 작성하여 첫 번째 initialCapacity 소수를 얻은 다음 java를 사용하여 순차적으로 인쇄하려고합니다. 그것은 첫째로 나는 오류, 두 가지 이유로 작동하지 않습니다수정 방법 - 41 : 정적 컨텍스트에서 비 정적 변수를 참조 할 수 없습니다. -> 이유는 무엇입니까?
41 : 비 정적 변수 listOfPrimeNumbers은 정적 컨텍스트
내가 프로그램을 실행하려고하지만, 심지어에서 참조 할 수 없습니다 변수를 정적으로 변경하고 프로그램을 실행하면 "1"밖에 인쇄되지 않습니다. 그래서 생성자 Primes의 while 루프를 반복 한 다음 중지하고 아무리 열심히해도 문제를 찾을 수 없습니다! 누구든지 나를 빨리 도와 줄 수 있겠습니까? 아주 빨리 보일 수도 있고 잘못 될 수 있다고 말해도 정말로 감사하겠습니다.
또한 정적이 아닌 정적 변수 및 메서드와 관련된 이야기는 무엇입니까? 이들을 사용할 때 가장 좋은 방법은 무엇입니까? 누구든지이 문제를 설명하는 페이지에 링크 할 수 있다면 (나는 쓸모 없게 봤습니다!) 읽으 려구요.
정말 고마워요! 모든 정적 (I 여러 인스턴스를 가질 수 있음을 의미?)되도록
import java.util.*;
public class Primes {
private ArrayList<Integer> listOfPrimeNumbers;
public static void main(String[] args) {
ArrayList<Integer> listOfPrimeNumbers;
Primes generator=new Primes(50);
print();
}
public Primes(int initialCapacity) {
listOfPrimeNumbers = new ArrayList<Integer>(initialCapacity);
int index=0;
int counter=0;
while (counter != initialCapacity ) {
if (isPrime(index)) {
listOfPrimeNumbers.add(index);
counter++;
System.out.println(counter);
index++;
}
else {
index++;
}
}
}
public boolean isPrime(int candidateNo) {
Iterator<Integer> iter = listOfPrimeNumbers.iterator();
//in here ! ?
int i=2;
while (iter.hasNext()) {
int next = iter.next();
if (next%i==0 && i!=1) {
return false;
}
}
return true;
}
public static void print() {
int n = listOfPrimeNumbers.size();
for(int i = 0; i <= n ; i++)
System.out.println(listOfPrimeNumbers.get(i));
}
}
지금 내 코드를 편집했습니다. 나는 이제 이것을 가지고있다, 문제는 단지 처음 51 개의 숫자를 출력하고 스택 오버플로를 얻는다. 아무도 도와 줄 수 있는가? :) 주셔서 감사합니다 :
import java.util.*;
public class Primes {
private static ArrayList<Integer> listOfPrimeNumbers;
public static void main(String[] args) {
ArrayList<Integer> listOfPrimeNumbers;
Primes generator=new Primes(50);
print();
}
public Primes(int initialCapacity) {
listOfPrimeNumbers = new ArrayList<Integer>(initialCapacity);
int index=2;
int counter=0;
while (counter != initialCapacity ) {
if (isPrime(index)) {
listOfPrimeNumbers.add(index);
counter++;
System.out.println(counter);
index++;
}
else {
index++;
}
}
}
public boolean isPrime(int candidateNo) {
Iterator<Integer> iter = listOfPrimeNumbers.iterator();
while (iter.hasNext()) {
int next = iter.next();
if (next%candidateNo==0 && candidateNo!=1) {
return false;
}
}
return true;
}
public static void print() {
int n = listOfPrimeNumbers.size();
for(int i = 0; i <= n ; i++)
System.out.println(listOfPrimeNumbers.get(i));
}
}
가능 중복 ([비 정적 변수 정적 콘텍스트 (자바)에서 참조 할 수 없습니다] http://stackoverflow.com/questions/2559527/non-static-variable-cannot-be-referenced- from-a-static-context-java) –