我在一个java训练营中,有一个关于反转数组并将其打印出来的任务。经过一些搜索等,我想通了。但我不明白这是我的代码
import java.util.Scanner;
public class Assignment_01 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner num = new Scanner(System.in);
int[] arr;
arr = new int[5];
for(int i = 0; i < arr.length; i++) {
System.out.println("Please enter numbers for array");
arr[i] = num.nextInt();
}
for(int i = arr.length; i > 0; i--) {
System.out.print(arr[i - 1] + " ");
}
}
}
我不明白为什么将 - 1 添加到数组中。我试图在这里阅读其他文章,但由于某种原因,它只是超越了我。很抱歉打扰你们所有人,但我知道我需要能够理解它。非常感谢您的帮助
这很简单:在 Java 中,所有索引都是从 0 而不是从 1 开始存储的。
所以,arr.length
实际上返回lastArrayIndex + 1,并且你无法访问arr[arr.length]
,因为没有具有这种索引的元素。
作为数组的最后一个索引,如果arr.length-1
,我们从它开始。
你的代码实际上等于这个(也许你会发现它更直接):
for (int i = arr.length - 1; i >= 0; i--) {
System.out.println(arr[i] + " ");
}
很抱歉发布一个单独的答案 - 写评论的声誉不够。
请记住,数组的最后一个索引是 arr.length-1。因此,如果要打印从最后一个索引开始的值,它应该是 i-1。(您的 i 已设置为长度)。如果你不想有 arr[i-1]。您可以改为执行以下操作:
//change i from arr.length to i = arr.length-1
//change i>0 to i>=0
//change arr[i-1] to arr[i]
for(int i = arr.length-1; i >= 0;i--){
System.out.print(arr[i ]+" ");
}