【问题标题】:Why is my array showing 0s when I flip it and reverse it?为什么我的数组在翻转和反转时显示为 0?
【发布时间】:2020-07-27 17:16:51
【问题描述】:

试图反转用户输入的数组。

我的代码

    Scanner s = new Scanner(System.in);
    System.out.println("Enter numbers: ");
    int[] array = new int[5];
    int[] reversed = new int[array.length];
    for (int i = 0; i < array.length; i++) {
        array[i] = s.nextInt();
        reversed[i] = array[array.length - 1 - i];
    }
    System.out.println(Arrays.toString(reversed));

当我进入时:

 10
 20
 30
 40
 50

我明白了:

 output:
 [0, 0, 30, 20, 10]

然而,当我对数字进行硬编码时,它工作得很好。

  int[] array = {10, 20, 30, 40, 50};
    int[] reversed = new int[array.length];
    for (int i = 0; i < array.length; i++) {
        reversed[i] = array[array.length - 1 - i];
    }
    System.out.println(Arrays.toString(reversed));

我回来了:

 [50, 40, 30, 20, 10]

不知道我在这里做错了什么。我知道还有其他方法可以做同样的事情,但我想弄清楚为什么我这样做的方式会给我带来问题。

【问题讨论】:

    标签: java arrays algorithm


    【解决方案1】:

    只需更改这一行:

     reversed[i] = array[array.length - 1 - i];
    

    到:

     reversed[array.length-1-i] = array[i];
    

    如前所述,您正试图在数组被填充之前访问它

    【讨论】:

      【解决方案2】:

      您正在从头到尾填充数组,并且在填充 reversed 之前使用来自 array 的值!

      具体来说,一旦您尝试填写 reversed[0],您将使用尚未填写的 array[4]

      您可以克服它,首先填写array,然后在第一个循环完成后开始在第二个循环中填写reversed

      【讨论】:

        【解决方案3】:

        尝试下面的代码来实现数组的反转:

        import java.util.Scanner;
        import java.util.Arrays;
        
        
        public class Main {
            
            public static void main(String args[]) { 
                
                Scanner s = new Scanner(System.in);
                System.out.println("Enter numbers: ");
                int[] array = new int[5];
                int[] reversed = new int[array.length];
                for (int i = 0; i < array.length; i++) {
                    array[i] = s.nextInt();
                }
        
                int j = array.length; 
                for (int i = 0; i < array.length; i++) { 
                    reversed[j - 1] = array[i]; 
                    j = j - 1; 
                } 
        
                System.out.println("Reversed array is: \n"); 
                for (int k = 0; k < array.length; k++) { 
                    System.out.println(reversed[k]); 
                } 
            } 
        }
        

        输出:

        Enter numbers:                                                                                                                                                
        1                                                                                                                                                             
        2                                                                                                                                                             
        3                                                                                                                                                             
        4                                                                                                                                                             
        5                                                                                                                                                             
        Reversed array is:
        
        5                                                                                                                                                             
        4                                                                                                                                                             
        3                                                                                                                                                             
        2                                                                                                                                                             
        1 
        

        【讨论】:

          猜你喜欢
          • 2013-09-07
          • 1970-01-01
          • 1970-01-01
          • 2022-01-18
          • 2019-05-05
          • 2018-06-30
          • 1970-01-01
          • 1970-01-01
          • 2016-06-08
          相关资源
          最近更新 更多