0

再次需要帮助。对不起。如何从我的数组中删除空值?这是我到目前为止所得到的。

int unikCount = 0;
String c = " ";
for (int i = 0; i < a.length; i++) {
    for (int j = 0; j < a.length; j++) {
        if (tempAry[i].equals(tempAry[j])) {
            unikCount++;
        }
        if (unikCount > 1) {
            tempAry[j] = c;
            unikCount = 1;

        }

    }
    unikCount = 0;
}
for (i = 0; i < a.length; i++) {
    if (tempAry[i] != c) {
        unikCount++;
    }

}
System.out.println(unikCount);

for (int i = 0; i < a.length; i++) {
    for (int j = 1; j < a.length; j++) {
        if (tempAry[i].equals(tempAry[j])) {
            if (tempAry[i] == c) {
                count++;
                if (tempAry[j] != c) {
                    count++;
                    tempAry[j] = tempAry[i];

                }
            }
        }
    }

}
count = 0;
for (int i = 0; i < a.length; i++) {
    System.out.println(tempAry[i]);
}

*删除部分在“System.out.println(unikCount)”之后。感谢即将到来的帮助。顺便说一句,不能使用哈希和数组列表。

4

3 回答 3

2

你可以这样检查null

if ( null == someObject ) 
{
    // do things
}

没有办法从数组中删除一个元素并让它自动收缩。您必须使用一个临时数组来保存值,创建一个新大小的数组并传输所有这些项目。

更有效的方法是使用List

于 2013-10-04T23:22:27.547 回答
0

看看你的逻辑(有适当的缩进):

if(tempAry[i].equals(tempAry[j])) {                      
    if(tempAry[i] == c) {           
       count++;
       if(tempAry[j] != c) {
           count++;
           tempAry[j] = tempAry[i];

       }
    }
}

这没有任何意义。为什么要检查tempAry[j] != c 里面 if(tempAry[i] == c)???

你的意思是if...else改用吗?

于 2013-10-04T23:29:51.593 回答
0
int j = 0;
Object[] temp = new Object[a.length];
for (int i = 0; i < a.length; i++) {
    if (a[i] != null) {
        temp[j++] = a[i];
    }
}
Object[] newA = new Object[j];
System.arraycopy(temp, 0, newA, 0, j);

如果该数组是一个数组,例如,String,您当然会将“Object”更改为“String”。如果“null”表示一个空字符串,那么if测试将被适当地更改。

于 2013-10-04T23:43:05.240 回答