Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用参数在java中反转数组_Java_Arrays - Fatal编程技术网

使用参数在java中反转数组

使用参数在java中反转数组,java,arrays,Java,Arrays,我想反转一个数组,所以当我输入 1 4 5 6 我想让程序返回 6 5 4 1 这是我编写的代码,但我不断得到arrayIndexOutOfBoundException错误 import java.io.*; import java.util.*; public class Oef9 { public int[] array_oef9 (int[] array1){ int lengte=array1.length; int[] array= ne

我想反转一个数组,所以当我输入

1 4 5 6
我想让程序返回

6 5 4 1
这是我编写的代码,但我不断得到arrayIndexOutOfBoundException错误

import java.io.*;
import java.util.*;

public class Oef9
{

    public int[] array_oef9 (int[] array1){
        int lengte=array1.length;
        int[] array= new int[lengte];

        for (int i=0; i<lengte;i++ ){
            array[lengte]=array1[i];
            lengte=lengte-1;
        }
        return array;

    }
}
import java.io.*;
导入java.util.*;
公共类Oef9
{
公共int[]数组\u oef9(int[]数组1){
int lengte=阵列1.长度;
int[]数组=新的int[lengte];

对于(int i=0;i它这样做的原因是因为使用lengte作为数组的长度。新数组的第一个索引应该比长度小1。lengte应该是4,最后一个索引应该是3

public class Oef9{

public int[] array_oef9 (int[] array1){
    int lengte=array1.length;
    int[] array= new int[lengte];

    for (int i=0; i<array1.length;i++ ){
        array[--lengte]=array1[i];
    }
    return array;
} 
}
公共类Oef9{
公共int[]数组\u oef9(int[]数组1){
int lengte=阵列1.长度;
int[]数组=新的int[lengte];

for(int i=0;i
for(int i=0;i数组中的最后一个元素位于
length-1
位置

最好尝试从头到尾迭代,如下所示:

int j = 0;
for(int i = lengte - 1, i >= 0, i--) {
    array[j] = array1[i];
    j++;
}

如果不需要使用数组

Collections.reverse(List)
会很好的

或者,您可以使用以下命令

public static void main(String[] args) {
    int[] array = { 2,9,5,6,3 };


    int[] reversed = new int[array.length];

    for (int i = array.length; i > 0; i--) {
        reversed[reversed.length - i] = array[i-1];
    }

    for (int j : reversed) {
        System.out.print(j + ",");
    }


}

你需要给你的长度一个额外的空间;不要在循环中更新
lengte
,因为它也在循环中使用,否则
i
lengte
将在迭代进行到一半时“相遇”。可能重复
public static void main(String[] args) {
    int[] array = { 2,9,5,6,3 };


    int[] reversed = new int[array.length];

    for (int i = array.length; i > 0; i--) {
        reversed[reversed.length - i] = array[i-1];
    }

    for (int j : reversed) {
        System.out.print(j + ",");
    }


}