簡體   English   中英

為什么我的數組在翻轉和反轉時顯示為 0?

[英]Why is my array showing 0s when I flip it and reverse it?

試圖反轉用戶輸入數組。

我的代碼

    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]

不知道我在這里做錯了什么。 我知道還有其他方法可以做同樣的事情,但我試圖弄清楚為什么我這樣做的方式會給我帶來問題。

您正在從頭到尾填充您的 arrays ,並且在填充它們之前使用array中的值填充reversed

具體來說,一旦您嘗試填充reversed[0] ,您將使用尚未填充的array[4]

您可以通過首先填充array來克服它,並在第一個循環完成后開始在第二個循環中reversed填充。

只需更改此行:

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

至:

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

如前所述,您正在嘗試在填充數組之前訪問它

嘗試下面的代碼來實現數組的反轉:

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]); 
        } 
    } 
}

Output:

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

5                                                                                                                                                             
4                                                                                                                                                             
3                                                                                                                                                             
2                                                                                                                                                             
1 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM