簡體   English   中英

數組隱私Java-基本

[英]Array Privacy Java - Basic

對於另一個問題,我很抱歉,這是一個非常基本的問題,但是我在某些Java代碼中遇到了更多的問題,這些問題我必須適合上課。 分配工作是對Eratosthenes程序進行篩分,盡管我的構造函數似乎可以工作(從main方法調用myArray[50]給出了初始化的值),但是它沒有反映其他類的含義的任何更改。制作myArray 另外, print()打印任何內容(可能是因為該函數看到了myArray的統一版本)。

目標是SieveEm()和deleteStuff()將所有非素數標記為false,print()隨之出現並打印所有素數(標記為true)。

我似乎無法在Internet / 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]);
    }
}

對於有問題的任何事情,我都會逐一處理,因為似乎有些地方需要糾正。

對於public void deleteStuff(int current),int increment= current; current+=increment; int increment= current; current+=increment; 似乎相當多余和痛苦,因為increment並沒有做任何特別的事情。 更重要的是,您的while - loop將永遠不會終止,因為在第一次通過時current = 0; increment = 0; 如果您current++; 然后您的while-loop將終止。 另外,如果while循環確實在執行並遍歷數組,則所有true值都將設置為false。

print() 此方法不打印任何內容,因為您將整個myArray設置為false。 當然,由於我前面提到的while-loop問題,因為您陷入了永無休止的while-loop. ,所以永遠無法達到要打印的for-loop while-loop. 因此,如果您解決了while - loop問題,則可以將數組中的每個元素設置為false,這樣就永遠不會執行下面的語句。

if(this.myArray[i]) { System.out.println(i); }

如果我發現其他任何問題,我會通知您。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM