[英]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.