为什么我的数组在翻转和反转时显示0



尝试反转用户输入数组。

我的代码

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]

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

只需更改此行:

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

至:

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

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

您从开始到结束都在填充数组,在填充之前,您正在用array的值填充reversed

具体地说,一旦您尝试填充reversed[0],就会使用尚未填充的array[4]

您可以通过首先填充array来克服它,并在第一个循环完成后在第二个循环中开始填充reversed

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

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 

最新更新