Arrays 创建将整数数组作为输入并返回反向数组的方法时遇到问题

Arrays 创建将整数数组作为输入并返回反向数组的方法时遇到问题,arrays,methods,return,reverse,Arrays,Methods,Return,Reverse,我需要帮助写这段代码,这样我就可以反转整数数组并返回它?有人能帮忙吗 public class Quesitons { public static void main(String[] args) { int[] numbers = {1, 2, 3, 4, 5, 6, 8}; int[] a = reverseArray(numbers); System.out.println(a); } public stat

我需要帮助写这段代码,这样我就可以反转整数数组并返回它?有人能帮忙吗

public class Quesitons {

    public static void main(String[] args) {

        int[] numbers = {1, 2, 3, 4, 5, 6, 8};

        int[] a = reverseArray(numbers);
        System.out.println(a);

    }

    public static int[] reverseArray(int[] numbers) {

        int [] newArray= new int [numbers.length];
        int temp;
        int left = numbers[0];
        int right = numbers.length; 
        int  mid = left+right/2;
        for (int i=0; i<mid;i++){
            temp = left;
            left= right;
            right= temp;

            right= right -1;
            left= left+1;

            left= newArray[0];
            right=newArray.length-1;
        }
        return newArray;
    }
}
公共类问题{
公共静态void main(字符串[]args){
int[]数字={1,2,3,4,5,6,8};
int[]a=反向耳环(数字);
系统输出打印项次(a);
}
公共静态int[]反向数组(int[]个数){
int[]newArray=newint[numbers.length];
内部温度;
int left=数字[0];
int right=number.length;
int mid=左+右/2;

对于(int i=0;i和编程中的大多数任务一样,最简单的方法是根本不做任何工作。虽然数组没有
reverse
方法,但在
Collections
中有一个反向方法。因此,如果要使用
List
而不是数组,可以调用
yourList.reverse()
,所有工作都将为您完成

如果您想要或需要使用数组,这里有一个方法,它将返回传递给它的
int[]
的相反值:

public static int[] reverseArray(int[] input)
{
    int[] reversedArray = new int[input.length];

    int j = 0;
    for (int i = input.length - 1; i >= 0; i--)
    {
        reversedArray[j] = input[i];
        j++;
    }

   return reversedArray;
}
总结一下它的作用:首先,它创建一个与输入数组长度相同的新数组。然后,在从输入数组的最后一个元素移动到第一个元素的for循环中,它从第一个元素到最后一个元素将这些元素分配给新数组的索引新数组的x,第二个索引的倒数第二个元素,等等。

试试这个

public static int[] reverseArray(int[] numbers) {

    int[] newArray= new int[numbers.length];
    int counter = 0 ;
    for(int i = numbers.length - 1; i >= 0; i--)
    {
        newArray[counter] = numbers[i];
        counter++;
    }
    return newArray;
}
按以下方式调用以查看结果:

int[] numbers = {1, 2, 3, 4, 5, 6, 8};
int[] a = reverseArray(numbers);
for(int i = 0; i < a.length; i++)
   Console.write(a[i]);
int[]数字={1,2,3,4,5,6,8};
int[]a=反向耳环(数字);
for(int i=0;i

我还没有测试过它,但肯定它会工作。

一个稍微不同的
循环来反转数组:

for (int i = numbers.length -1, j = 0; i >= 0; i--, j++)
{
   newArray[i] = numbers[j];
}
for
循环中,可以声明多个逗号分隔的变量。唯一的问题是只能有一个转义子句(即
i>=0
j


基本上,您所做的是倒计时,而对原始数组倒计时。如果您仔细想想,这是一个相当简单的实现。

如果您解释您正在使用的特定语言,它可能会帮助您获得帮助。您上面的代码到底有什么不起作用?当我编译或运行它时,我不知道按相反的顺序获取数字我想这可能是因为我没有将数字保存在新数组中?它可以工作,但当我运行它时,我得到了这个结果[I@15db9742@Dee你正在用ideone运行它,不是吗?如果你打印数组的每个元素,你会发现结果是你想要的。ideone似乎不支持打印数组。我在netbeans上运行它,我不知道它为什么这样做哈?是的weird@Dee我基本上可以保证它发生的原因是因为你只是在调用
System.out.println($your_array$)
。试着像这样迭代
reverseArray
的结果:
for(int q:reverseArray(new int[]{1,2,3,4,5}){System.out.println(q);
对,我的意思是它可以工作,但当它运行时我得到了这个结果[I@15db9742?你能解释一下我为什么会得到这个值吗?你能把你的参数值贴出来吗?你在哪里看到这个值?