下面是主題謎題的解決方案和輸出,我無法理解它是如何工作的。頭第一個Java拼圖4(第四章,第91頁)解釋
public class Puzzle4 {
public static void main(String[] args) {
Puzzle4b[] obs = new Puzzle4b[6];
int y = 1;
int x = 0;
int result = 0;
while (x<6) {
obs[x] = new Puzzle4b();
obs[x].ivar = y;
y = y*10;
x = x+1;
}
x = 6;
while (x>0) {
x = x-1;
result = result + obs[x].doStuff(x);
}
System.out.println("result " + result);
}
}
class Puzzle4b {
int ivar;
public int doStuff(int factor) {
if (ivar>100) {
return ivar*factor;
} else {
return ivar*(5-factor);
}
}
}
輸出:
result 543345
從我的理解,第一While循環將通過6次運行(從X == 0到x == 5)。 y變量反過來是'ivar',它的值爲1,000,000(我認爲這是我出錯的地方,但我會繼續希望被糾正)。
第二個While循環對我來說有點困惑。它將運行6次,循環的第二行將'x'值傳遞給doStuff方法,以便它返回一個值。我想出來的數字與實際結果不符。
任何幫助在這裏將不勝感激。如果我以錯誤的方式思考,請告訴我。如果有人想重新格式化我的代碼以更加緊密地與行業標準保持一致,那麼從一開始就學習好的習慣會很好!
如果你先解釋這個謎題,這將有所幫助。 – shmosel
您是否在調試器中逐行執行一行代碼?如果不是,那就是開始的地方。然後,當你確定它的行爲不符合你的期望的確切位置時,如果你仍然有問題,請編輯你的文章,幷包括你不明白的細節。 –
1.這只是一個練習,要求讀者用一堆可能的代碼填充一些空白。不是一個謎題。 – Boris