尝试编写一个方法reverseIntArray(int [] array),该方法应返回整数数组的反向副本。例如,如果array = [1,2,3,4],则该方法应返回数组[4,3,2,1]。
该程序编译无任何错误消息。是什么错误导致程序在运行时出现错误的不正确行为?
public static int[] reverseIntArray(int[] array) {
int[] result = new int[10];
int j = array.length;
for (int i = 1; i < array.length; i++ ) {
result[i] = array[j];
j++;
}
return result;
}
应如何纠正错误? 错误到底是什么? 该错误会产生什么影响?
答案 0 :(得分:1)
您需要将j设置为array.length -1而不是array.length,然后将其递减而不是递增,然后将for循环索引从0而不是1开始。
答案 1 :(得分:0)
您的代码有两个问题:
result
数组的大小为10
,而不是传入的数组的大小。如果传入的数组大小较小或较大,则会导致问题大于10。您可以使用int[] result = new int[array.length];
i
的{{1}}进行初始化。 Java数组从索引1
开始,因此您的循环将跳过填充数组的第一个元素。相反,您想要:0
for (int i = 0; i < array.length; i++) {
开始,因此最后一个元素的索引比数组的大小小1。您要:0
int j = array.length - 1;
的元素,但是您的代码是递增array
而不是递减。您希望j
在j--
的地方答案 2 :(得分:0)
要解决与数组相关的问题,您必须仅了解其在内存中的存储及其索引。
在您的解决方案中,您试图覆盖值。在解决方案中,您需要先保存旧值,然后再将新值写入任何索引。
注意:您必须知道如何交换两个数字。
int[] arr={1,2,3,4};
int i=0;
int j=arr.length-1;
while(i<j)
{
//Swapping two numbers
int temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
i++;
j--;
}
您也可以使用for循环进行此操作。