Java 我的反转阵列的输出有问题

Java 我的反转阵列的输出有问题,java,arrays,reverse,Java,Arrays,Reverse,好的,我有我的代码,一切都很好,但我不明白为什么我的输出给我两个反转,而不是一个反转。最后一个是正确的,但反转的第一个输出有点混淆 public class ICE17 { static //Examine the following program: class ArrayProblems { public static void main(String[] args) { int[] val = { 0

好的,我有我的代码,一切都很好,但我不明白为什么我的输出给我两个反转,而不是一个反转。最后一个是正确的,但反转的第一个输出有点混淆

public class ICE17 {

       static //Examine the following program:
       class ArrayProblems {

            public static void main(String[] args) {

                int[] val = { 0, 1, 2, 3 };
                int sum = 0; //write code here

                for (int i = 0; i < val.length; i++) {
                    sum += val[i];
                 }

                System.out.println("Sum of all numbers = " + sum);
                reverse();
            }
            public static void reverse() {
                int[] val = { 0, 1, 2, 3 };
                //int temp=0;
                System.out.println("Original Array: " + val[0] + " " + val[1] + " " + val[2] + " " + val[3]);
                // write code here to reverse the order of the numbers in the array
                for (int i = 0; i < val.length / 2; i++) {

                    int temp = val[i];
                    val[i] = val[val.length - 1 - i];
                    val[val.length - 1 - i] = temp;    
                    System.out.println("Reversed Array: " + val[0] + " " + val[1] + " " + val[2] + " " + val[3]);

                }
            }
        }
    }
公共类ICE17{
静态//检查以下程序:
类数组问题{
公共静态void main(字符串[]args){
int[]val={0,1,2,3};
int sum=0;//在此处编写代码
对于(int i=0;i
检查你的花括号

for (int i = 0; i < val.length / 2; i++) {
    int temp = val[i];
    val[i] = val[val.length - 1 - i];
    val[val.length - 1 - i] = temp;

    System.out.println("Reversed Array: " + val[0] + " " + val[1] + " " + val[2] + " " + val[3]);
}
for(int i=0;i
如您所见,每次for循环运行时,您都会打印出反向数组

在第一个循环中,反转没有完成,所以打印出来有点滑稽。

检查你的花括号

for (int i = 0; i < val.length / 2; i++) {
    int temp = val[i];
    val[i] = val[val.length - 1 - i];
    val[val.length - 1 - i] = temp;

    System.out.println("Reversed Array: " + val[0] + " " + val[1] + " " + val[2] + " " + val[3]);
}
for(int i=0;i
如您所见,每次for循环运行时,您都会打印出反向数组

在第一个循环中,反转没有完成,所以打印出来有点滑稽。

埃里克正确地回答了修复打印问题的问题。您正在for循环中打印数组,因此它将打印长度/2次

反向方法的另一件事是创建一个本地数组并将其反向。如果确实要反转在main方法中创建的数组,请编写一个函数,将数组作为输入,如下所示:

public class ICE17 {

    public static void reverseArray(int[] val) {
        for (int i = 0; i < val.length / 2; i++) {
            int temp = val[i];
            val[i] = val[val.length - 1 - i];
            val[val.length - 1 - i] = temp;
        }
    }

    public static void printArray(int[] val) {
        for(int i: val) {
            System.out.print(i + " ");
        }
        System.out.println();
    }
    public static void main(String[] args) {
        int arr[] = { 0, 1, 2, 3 };
        System.out.println("Array before reverse");
        printArray(arr);
        reverseArray(arr);
        System.out.println("Array after reverse");
        printArray(arr);
    }
}
公共类ICE17{
公共静态无效反向通道(int[]val){
对于(int i=0;i
埃里克解决了印刷问题,回答正确。您正在for循环中打印数组,因此它将打印长度/2次

反向方法的另一件事是创建一个本地数组并将其反向。如果确实要反转在main方法中创建的数组,请编写一个函数,将数组作为输入,如下所示:

public class ICE17 {

    public static void reverseArray(int[] val) {
        for (int i = 0; i < val.length / 2; i++) {
            int temp = val[i];
            val[i] = val[val.length - 1 - i];
            val[val.length - 1 - i] = temp;
        }
    }

    public static void printArray(int[] val) {
        for(int i: val) {
            System.out.print(i + " ");
        }
        System.out.println();
    }
    public static void main(String[] args) {
        int arr[] = { 0, 1, 2, 3 };
        System.out.println("Array before reverse");
        printArray(arr);
        reverseArray(arr);
        System.out.println("Array after reverse");
        printArray(arr);
    }
}
公共类ICE17{
公共静态无效反向通道(int[]val){
对于(int i=0;i
啊!非常感谢。我一定累了,真不敢相信我没看到!啊!!非常感谢。我一定累了,真不敢相信我没看到!