2014-12-30 53 views
3

我有一個計算總費用和收入的例子。整數數組中有一些從字符串數組轉換而來的值。一旦我運行代碼,總和是6000,並再次運行相同的代碼,總和得到乘以12000.我怎樣才能覆蓋這個問題。請檢查下面給出我的代碼..如何在android中清除int []數組?

public static int incSum=0; 

int[] numbersinc = new int[theAmount.length]; 

    for(int i=0;i<theAmount.length;i++) 
    { 

     numbersinc[i]=Integer.parseInt(theAmount[i]); 

     incSum=incSum+numbersinc[i]; 
    } 

    Log.e("SUM INC","Sum Inc= "+incSum); <<<<<- This sum is multiplying 
+1

刪除static這看起來並不像一個完整的代碼片段,是作爲一個Java的問題,而不是Android的更相關。 –

+1

它看起來像你的問題更多的是沒有被重置的總和,而不是數組的問題。在每次運行數組之前(即在for循環之前)重置incSum = 0。 –

回答

7

你可以簡單地分配給null參考。 (這適用於任何類型的陣列,而不只是ints

int[] arr = new int[]{1, 2, 3, 4}; 
arr = null; 

這將「清除掉」的陣列。如果您願意,您也可以爲該參考指定一個新陣列:

int[] arr = new int[]{1, 2, 3, 4}; 
arr = new int[]{6, 7, 8, 9}; 

如果您擔心內存泄漏,請不要。垃圾收集器將清除數組中剩下的任何引用。

又如:

float[] arr = ;// some array that you want to clear 
arr = new float[arr.length]; 

這將創建初始化爲浮點默認值的新float[]

因此,在你的代碼試試這個:

public int incSum=0; 

int[] numbersinc = new int[theAmount.length]; 
incSum = 0; //add this line 
    for(int i=0;i<theAmount.length;i++) 
    { 

     numbersinc[i]=Integer.parseInt(theAmount[i]); 

     incSum=incSum+numbersinc[i]; 
    } 

    Log.e("SUM INC","Sum Inc= "+incSum); <<<<<- This sum is multiplying 
    numbersinc = null; 
1
public static int incSum=0; 

您的變量是static所以當你在incSum變量再次運行,那麼先前的值存儲。從incSum

+0

真的是goog發現。 –