2016-11-18 69 views
0

我正在研究這個課程,這是課程,但不能爲我的數字生活爲什麼我有一個無止境的循環。這是我的第一個編程課,所以這對我來說都很新。我發現循環來自我的「getLocation」方法,我認爲我想要計算我的「位置」變量的方式有問題,但就像我說的我不確定。我們剛開始使用多個類和私有構造函數,它真的把我拋棄了。我會接受任何幫助。謝謝!尋找這個無限循環的原因

public int getLocation(){ 
    while (location <= 250) { 

    location = 5; 
    location++;      //endless loop here 
    System.out.println("test"); 
    } 

    return location; 
} 
+0

我已經將你的代碼減少到[mcve]。你發佈太多的代碼,只是模糊了這個問題。 –

+0

@AndyTurner感謝您的建議!下次我會記住這一點! – Steave

回答

3
while (location <= 250) { 

location = 5; 
location++;      //endless loop here 
System.out.println("test"); 
} 

location不能在這個循環超過250。執行循環體後,其值始終爲6,因爲您將其設置爲5並添加1.

因此,在達到此循環時提供location <= 250,它永遠不會停止。

location = 5;移到循環體外(或者只是刪除它)。

2
public int getLocation(){ 
    while (location <= 250) { 
     location = 5; // every loop this equals 5 
     location++;     
    } 
    return location; 
} 

您在每個循環中設置的位置等於5。將此移至while()之前,以便您只設置一次,然後在每個循環中遞增一次。

public int getLocation(){ 
    location = 5;   // this equals 5 initially 
    while (location <= 250) { 
     location++;   // this will now increment appropriately 
    } 
    return location; 
} 
+0

你可以這樣做,但爲什麼不只是'返回位置= 251;'並放棄循環?這是不明確的,這是OP的意圖。 –

+0

@AndyTurner不,現在還不清楚。但他說這是他的第一個編程課。隨着時間的推移你會學到一些東西。 – dckuehn

+0

抱歉:'if(location <= 250)location = 251;返回地點;'。 –

-1

你不能看到你是否失明。我使用大量的打印語句,以便我可以看到程序在做什麼。如果您不知道問題是什麼,那麼您不知道將打印語句放在哪裏。所以你可以看到很多打印語句。

+3

認真嗎? 「提交大量印刷聲明」雖然可能有幫助,但肯定不是答案。更多的不是這裏的答案。 '連接調試器'如果沒有其他,但不是這樣 – pinkfloydx33

+0

充分利用任何可用的調試功能。如果沒有可用的調試功能,那麼放置好的打印語句會提供信息。在我的情況下,我寧願使用具有調試功能的Code :: Blocks。但是,我無法讓它工作。 Code :: Blocks找不到我的Arduino庫。任何幫助,將不勝感激。 –