需要 Java 反向数组帮助



我在一个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 ]+" ");

    }

最新更新