如何在Android中清空int[]数组?

5

我有一个例子,它计算总支出和收入。这里有一些整数值在整数数组中,这些值是从字符串数组转换而来的。一旦我运行代码,总和为6000,再次运行相同的代码,总和就会增加到12000。我该如何解决这个问题?请查看下面给出的代码。

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
这似乎不是一个完整的代码片段,更适合作为Java问题而不是Android问题。 - Ben Neill
1
看起来你的问题更多与总和没有被重置有关,而不是数组出了问题。在每次遍历数组之前(也就是在for循环之前),重置incSum = 0。 - Ben Neill
2个回答

12

你可以简单地将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[],其初始值为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中移除static


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接