在java中插入和反转数组中的元素

时间:2015-01-30 23:18:45

标签: java arrays

我有一个使用插入方法和反向方法的问题,我试图在构造函数中进行,因为我是新的,这是一个练习示例。对于插入构造函数,我有: 它应该在数组

中的索引处插入一个元素
public boolean insert(int index, int element)
{
    int i;
    newArray = new int[Array.length + 1];
    for(i = index; i > newArray.length - 1; i++)
    {
        newArray[i] = newArray[i + 1];

        for(i = 0; i < newArray.length + 1; i++)
        {
            Array[i] = newArray[i];
        }
    }
    Array[index] = element;
    numElement = numElement + 1;
    return true;

我的反向构造函数是:

public boolean reverse(int start, int end)
{
    int temp;
    for(int i = start; i <(start + end) / 2 ; i++)
    {
        temp = Array[i];
        Array[i] = Array[end - i];
        Array[end - i] = temp;
    } 
    return true;
}

当我使用插入构造函数时,它将替换数字而不是创建一个新数组来容纳额外元素,在输出关闭之前它会给我一个异常错误。相反,它不会给我正确的输出。例如:我有一个数组[1,2,3,4,5,6,7,8,9,10],我想要反转它输出[1,2,6,5,4,3,7,8,9,10]的数字3-7。我不知道代码可能有什么问题。 编辑:我也试图不使用任何Arrays.util方法/ ArrayList等

2 个答案:

答案 0 :(得分:5)

数组有一种Java反向方法:

ArrayUtils.reverse(int[] array) //Reverses the order of the given array.

还有补充:

ArrayUtils.add(int[] array, int element) //Copies the given array and adds the given element at the end of the new array.

答案 1 :(得分:0)

如果没有使用ArrayUtils(为什么不?),那么也许可以使用System.arraycopy作为插入方法。

此外,这些不是构造函数,它们是方法。它们可能也应该是void方法或者返回新数组而不是布尔值(除非有理由在这里返回一个布尔值?)。

使用System.arraycopy的示例插入方法:

public static int[] insert(int[] list, int position, int value)
{
    int[] result = new int[list.length + 1];
    System.arraycopy(list,0,result,0,position);
    result[position] = value;
    System.arraycopy(list,position,result,position + 1,list.length - position);
    return result;
}