我有一个使用插入方法和反向方法的问题,我试图在构造函数中进行,因为我是新的,这是一个练习示例。对于插入构造函数,我有: 它应该在数组
中的索引处插入一个元素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等
答案 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;
}