从数组中删除前n个元素的逻辑

时间:2019-05-22 16:54:56

标签: java arrays

我需要为分配编写的一种方法应该是从数组中删除前n个元素。但是,我没有得到正确的输出。我相信我犯了一个错误,但是我不确定如何解决它。

解决方案应尝试尽可能紧密地维护代码的格式。

        for (int i = n; i >= 0; i--) {
            elementData[i] = elementData[i + 1];
            size--;
        }

代码的意思是,对于n和以下的每个元素,将其替换为索引中高于其的任何元素。然后,每次执行此操作时都要减小size变量,这会使它在打印时看起来像是删除操作。

我希望[0,1,2,4,6,4,7]的输出为[4,7]。

但是,我得到了[7]。

在上述情况下,

n传递为5。

4 个答案:

答案 0 :(得分:2)

我意识到这是一个寻找实现的赋值问题,但是任何在Java中执行此操作的人 都应使用提供的API。例如:

SQLiteDatabaseCorruptException

答案 1 :(得分:1)

您可以使用此功能:

int[] result = new int[elementData.length - n];
for (int i = 0; i < result.length; i++) {
    result[i] = elementData[n + i];
}

这是它的扩展形式:

int[] result = new int[elementData.length - n];
System.arraycopy(elementData, n, result, 0, result.length);

答案 2 :(得分:0)

elementData = Arrays.copyOfRange( elementData, n, elementData.length ); // originalArray, startIndex, end

答案 3 :(得分:0)

您可以使用过滤器:

#include <iostream>
int main()
{

int x{ 19 };
std::cout << "Hola!" << '\n';
std::cout << "Me llamo Kay\n";
std::cout << "And I am " << x << " years old\n";
std::cout << "Who are you?\n";
int y{};
std::cin >> y;
std::cout << "You are " << y << "?" << '\n';
return 0;
}

您要获取let a = [0, 1, 2, 4, 6, 4, 7] 删除前[4, 7]个元素,因此键入

5

现在

a = a.filter((_, i) => i >= 5)