Прошу прощения за (другой), по общему признанию, довольно простой вопрос, но у меня больше проблем в каком-то Java-коде, который мне нужен для класса. Назначение состоит в том, чтобы сделать сито программы Eratosthenes, и, хотя мой конструктор, похоже, работает (вызов myArray[50]
из метода main
дает значение, которое оно было инициализировано), оно не отражает никаких изменений, которые другие классы должны были сделать для myArray
. Кроме того, print()
ничего не печатает (вероятно, потому, что функция видит унифицированную версию myArray
.).Array Privacy Java - Basic
Цель состоит в том, что SieveEm() и deleteStuff() отмечают все не простые числа как false, print() приходит и печатает все простые числа (помечены как true).
Я не мог найти что-либо в Интернете/StackOverflow, рассматривая проблему. Что я делаю не так?
public class Sieve {
private int count;
private boolean[] myArray;
public Sieve(int length){
count = length+1;
boolean[] newArray = new boolean[length+1];
if(length>=1){
newArray[0]=false;
newArray[1]=false;
if(length>=2){
for(int i=0;i<=length;i++){
newArray[i]=true;
}
}
}
this.myArray = newArray;
}
public void SieveEm(){
System.out.println("here now");
System.out.println(this.myArray[50]==true);
for(int i=0; i<count;i++){
System.out.println("We got this far");
if(this.myArray[i]){
deleteStuff(i);
}
}
}
public void deleteStuff(int current){
int increment= current;
current+=increment;
while(current<count){
this.myArray[current]=false;
current+=increment;
}
}
public void print(){
this.SieveEm();
for(int i=2;i<count;i++){
if(this.myArray[i]){
System.out.println(i);
}
}
}
public static void main(String[] args){
Sieve mySieve = new Sieve(100);
mySieve.print();
System.out.println(mySieve.myArray[50]);
}
}
Можете ли вы пояснить разницу между «тем, что вы ожидаете от», «что происходит»? – Krease
Как примечание стороны, но если SieveEm() - это метод, тогда вы должны запустить его в нижнем регистре. – EricF