java-从任何位置删除数组的元素并移动其余元素

时间:2018-09-03 01:29:27

标签: java arrays

我正在尝试通过将值设置为0从数组中删除一个元素来移动数组中的元素。只有当我从数组的开头删除带有此块的元素时,我才能使该元素起作用代码。

if (balance[index] == 0 && acctNum[index] != 0) {
    numaccts--;
    acctNum[index] = 0;
    for(int count=0;count<numaccts;count++){
        acctNum[count]=acctNum[count+1];
        balance[count]=balance[count+1];
    }
acctNum[numaccts]=0;
balance[numaccts]=0;
}

当我从数组中删除第一个值(在567834之前有一个值)时,这是很好的输出。

567834    100.50
111111    0.0
222222    0.0
333333    0.0
444444    0.0

如果我删除除第一个值以外的任何值,则数组未正确移位,这就是结果。 567834之前应该有一个数字,并且“ 0 0.00”不应在那里。

567834    100.5
0    0.0
222222    0.0
333333    0.0
444444    0.0

我相信问题出在这篇文章的第一段代码中,但是我在修复它时遇到了麻烦。我认为创建临时变量不会解决该问题。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

您只想将内容从新创建的孔移出。您可能仍然需要小心一点,即下面的内容可以处理最后一个插槽,而无需读取数组末尾的内容。但这应该是一个好的开始。

this.setState({addingPerson: true, people: [newPerson, ...this.state.people]);

答案 1 :(得分:0)

您的问题是,您为for循环内的count变量分配了0,而不是给出需要删除的元素的索引。

private void deleteAndShift(int [] balance, int [] acctNum, int index, int numaccts) {
    if(isValidAccount(balance, acctNum, index)) {
        numaccts--;
        acctNum[index] = 0;
        for(int count=index;count<numaccts;count++){
            acctNum[count]=acctNum[count+1];
            balance[count]=balance[count+1];
        }
    acctNum[numaccts]=0;
    balance[numaccts]=0;

    }
}

private boolean isValidAccount(int[] balance, int[] acctNum, int index) {
    return balance[index] == 0 && acctNum[index] != 0;
}