2015-12-14 18 views
1

我有小法能夠計算出一個目錄的大小增加其價值。Java中,局部變量沒有任何理由

每當我的程序跨越if語句,sum增加其值。我嘗試在sum +=行上設置斷點,但即使sum的值增加,執行也不會停止。

如果我刪除sum +=行然後sum永不改變,所以我相信這條線是sum正在增加。

可能會發生什麼?

+4

這似乎是一個愚蠢的問題,但你在調試模式下啓動你的應用程序,如果斷點雙重檢查插入在這個確切的線? – Keammoort

+3

你的斷點在其他線上工作嗎? – user140547

+2

您確定您正在查看相同的'sum'變量嗎?你有一個名爲'sum'的成員變量嗎?你有沒有嘗試在方法的第一行設置一個斷點,並逐步完成它? –

回答

3

也許另一個線程正在搞亂那個變量。一個非常簡單的變化,可以讓這個線程安全的,並取回你的理智也:

private static long getDirSize(File srcDir) { 
    long sum = 0; 
    if (srcDir.isFile()) { 
     sum += srcDir.length(); 
    } else { 
     for (File curFile : srcDir.listFiles()) { 
      sum += getDirSize(curFile); 
     } 
    } 
    return sum; 
} 
+0

這是計算大小的正確方法。然而,這不會解決OP的實際問題......但是根據問題中的信息,這個問題不可診斷/可解決。 –