Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.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,我有一个赋值来创建一个类,在这个类中我创建了一个大小为10的数组,称为source,并将0-10范围内的随机整数赋值给其中的所有索引,然后调用一个方法,以相反的顺序创建一个新数组。我尝试了下面的代码: public class Exercise7_4 { // reverse array method public static int[] reverseArray(int[] arr) { int[] reverse = new int[arr.length]

我有一个赋值来创建一个类,在这个类中我创建了一个大小为10的数组,称为
source
,并将0-10范围内的随机整数赋值给其中的所有索引,然后调用一个方法,以相反的顺序创建一个新数组。我尝试了下面的代码:

public class Exercise7_4 {

    // reverse array method
    public static int[] reverseArray(int[] arr) {
        int[] reverse = new int[arr.length];

        for (int i = 0; i < reverse.length - 1; i++) {
            reverse[i] = arr[arr.length - 1 - i];
        }

        return reverse;
    }

    // print array in ascending order
    public static void printArray(int[] arr) {

        for (int i = 0; i < arr.length - 1; i++) {
            System.out.printf("%d\t", arr[i]);
        }

        System.out.println();
    }

    public static void main(String[] args) {
        int[] source = new int[10];

        for (int i = 0; i < source.length - 1; i++) {
            source[i] = (int) (Math.random() * 10 + 1);
        }

        int[] reverse = reverseArray(source);
        printArray(source);
        printArray(reverse);
    }
}        
也就是说,由于某种原因,
reverseArray
方法无法在
reverse[0]
上正常工作

我想知道为什么会发生这种情况,以及我如何解决它。
提前谢谢

更改
反转array
功能如下:

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

int[] reverse = new int[arr.length];

for (int i = 0; i < reverse.length; i++) {

    reverse[i] = arr[arr.length - i];

}


return reverse;

}

在这里,您也不需要从
源代码执行
-1
。长度

更改
reversearlay
功能,如下所示:

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

int[] reverse = new int[arr.length];

for (int i = 0; i < reverse.length; i++) {

    reverse[i] = arr[arr.length - i];

}


return reverse;

}

在这里,您也不需要从
源代码执行
-1
。length

更改所有for循环

for (int i = 0; i < source.length - 1; i++)
for(int i=0;i

for(int i=0;i

您的反向方法完全正确(如果更改循环)。您犯的错误是创建了一个大小为10的数组,其中填充了9个随机值(因此索引10的值将为0)。

将所有for循环从

for (int i = 0; i < source.length - 1; i++)
for(int i=0;i

for(int i=0;i

您的反向方法完全正确(如果更改循环)。您犯的错误是,您创建了一个大小为10的数组,其中填充了9个随机值(因此,索引10的值将为0)。

您可以检查在for循环的每次迭代中参考了哪个索引

这是你的解决方案

    for (int i = 0; i < reverse.length - 1; i++) {
        System.out.println("" + i + " " +  (reverse.length - 1 - i));        
    }
“i”没有得到值9,(reverse.length-1-i)没有得到值0

更改此测试的测试条件:

i < reverse.length

您可以检查在for循环的每次迭代中引用的索引

这是你的解决方案

    for (int i = 0; i < reverse.length - 1; i++) {
        System.out.println("" + i + " " +  (reverse.length - 1 - i));        
    }
“i”没有得到值9,(reverse.length-1-i)没有得到值0

更改此测试的测试条件:

i < reverse.length
包com.test

公营索塔雷酒店{

private int[] getSortedArry(int[] arr){

    int arrLen = arr.length;
    int reversedArry[] = new int[arrLen]; 
    System.out.println("array lenght: " +arr.length);
    int j = 0;
    for(int i=arrLen-1; i>=0; i--){

        reversedArry[j] = arr[i];


        j++;

    }
    System.out.print("\n");
    return reversedArry;

}

public static void main(String[] args){

    int arr[] = {10,2,3,4,5,12,23,43,45,65};

    SortArray sortArray = new SortArray();
    int reversedArry[] = sortArray.getSortedArry(arr);

    for(int i=0;i<reversedArry.length;i++){
        System.out.print(reversedArry[i] + " ");    

    }


}
private int[]getsortedary(int[]arr){
int arrLen=arr.length;
int reversedArry[]=新int[arrLen];
System.out.println(“数组长度:“+arr.length”);
int j=0;
对于(int i=arrLen-1;i>=0;i--){
反向ARRY[j]=arr[i];
j++;
}
系统输出打印(“\n”);
反向收益率;
}
公共静态void main(字符串[]args){
int arr[]={10,2,3,4,5,12,23,43,45,65};
SORTARAY SORTARAY=新SORTARAY();
int reversedArry[]=sortArray.getSortedArry(arr);
对于(int i=0;ipackage com.test

公营索塔雷酒店{

private int[] getSortedArry(int[] arr){

    int arrLen = arr.length;
    int reversedArry[] = new int[arrLen]; 
    System.out.println("array lenght: " +arr.length);
    int j = 0;
    for(int i=arrLen-1; i>=0; i--){

        reversedArry[j] = arr[i];


        j++;

    }
    System.out.print("\n");
    return reversedArry;

}

public static void main(String[] args){

    int arr[] = {10,2,3,4,5,12,23,43,45,65};

    SortArray sortArray = new SortArray();
    int reversedArry[] = sortArray.getSortedArry(arr);

    for(int i=0;i<reversedArry.length;i++){
        System.out.print(reversedArry[i] + " ");    

    }


}
private int[]getsortedary(int[]arr){
int arrLen=arr.length;
int reversedArry[]=新int[arrLen];
System.out.println(“数组长度:“+arr.length”);
int j=0;
对于(int i=arrLen-1;i>=0;i--){
反向ARRY[j]=arr[i];
j++;
}
系统输出打印(“\n”);
反向收益率;
}
公共静态void main(字符串[]args){
int arr[]={10,2,3,4,5,12,23,43,45,65};
SORTARAY SORTARAY=新SORTARAY();
int reversedArry[]=sortArray.getSortedArry(arr);

for(int i=0;在for循环中,您从
0
迭代到
arr.length-2
reverse.length-2
。将循环更改为类似于
for(int i=0;i
而不是
for(int i=0;i
谢谢@JonnyHenly的帮助!在for循环中,您可以从
0
迭代到
arr.length-2
reverse.length-2
。将循环更改为类似于
for(int i=0;ifor(int i=0;i
谢谢@JonnyHenly的帮助!@JonnyHenly:Ya。但是他只创建了9个元素的数组。这就是为什么。
i
这意味着
i@KrutiPatel成功了。这确实是一个新手的错误。@JonnyHenly:Ya。但是他只创建了9个元素的数组。这就是为什么。
i
这意味着
iThanks@KrutiPatel成功了。这真是一个新手的错误。