private static final String TAG = MainMenu.class.getSimpleName();
Log.d(TAG, "begin loop");
for (int fa = 0; fa < 2000; ++fa) {
Log.d(TAG, "starting loop " + String.valueOf(fa));
for (int fb = 0; fb < 8; ++fb) {
Log.d(TAG, "fb = " + String.valueOf(fb));
}
}
我知道這是一個非常簡單的嵌套循環。我得到了一些棘手的事情,對我而言,我看不出爲什麼。我試圖用while循環重寫它,但同樣的事情發生了。Android Studio for loop問題
這裏是正在發生的扭曲事情的例子:
D: starting loop 53
D: fb = 0
D: fb = 1
D: fb = 2
D: fb = 3
D: fb = 4
D: fb = 5
D: fb = 6
D: starting loop 54
D: fb = 0
D: fb = 2
D: fb = 3
D: fb = 4
D: fb = 6
D: starting loop 55
D: fb = 0
D: fb = 1
D: fb = 3
D: fb = 4
D: fb = 6
D: starting loop 56
D: fb = 0
D: fb = 1
D: fb = 3
D: fb = 4
D: fb = 6
D: fb = 7
D: fb = 0
D: fb = 1
D: fb = 3
D: fb = 4
D: fb = 6
D: fb = 7
我把第一個日誌聲明,這樣我就知道,如果它被另一個線程跑了,不知怎麼讓指針復位,但在日誌中只有一個「開始循環」。
你可以在循環53中看到,它甚至沒有將它設置爲7,在循環54和55中它跳過數字,在56中重新開始。
這是行未記錄問題還是循環問題?
我嘗試註釋掉內登錄,我得到的輸出是這樣的:
D: starting loop 1642
D: starting loop 1643
D: starting loop 1645
D: starting loop 1646
D: starting loop 1647
D: starting loop 1649
D: starting loop 1650
D: starting loop 1652
你可以看到它是跳躍的數字。我希望這只是一個日誌記錄問題,for循環沒有什麼大問題。
任何人都可以給任何幫助非常感謝。提前致謝。
聽起來像異步日誌。你沒有提到你使用的日誌。如果用'System.out.println'替換日誌會發生什麼? –
無關:fa/fb是**非常罕見的循環計數器名稱。改用i,j,k ...。並做我++;不是++ i。這也是非常罕見的。事情:你不想用這些東西讓你的讀者感到驚訝。當您偏離常規做法時,會使您的代碼閱讀困難10倍。 – GhostCat
我把它變成了一個奇怪的變量。顯而易見的是,這些變量沒有被用在別的地方。我知道如果我在循環開始聲明變量,那麼它是本地的,但我想讓它變得明顯。 – Will