2016-05-31 89 views
0

我在一个java bootcamp中,并有一个关于反转数组并将其打印出来的任务。我想通了之后,一些搜索等,但我不明白,这里是我的代码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被添加到阵列。我试图在这里阅读其他文章,但由于某种原因,它只是越过我。我很抱歉打扰你们,但我知道我需要能够理解它。非常感谢您的帮助

+0

这个问题可能更适合在这里:http://codereview.stackexchange.com/因为你真的没有问题有待解决。 – theblindprophet

+0

@ theblindprophet谢谢。真的不知道把它放在哪里,并认为这是一个问题,所以我不确定。它真的让我很沮丧,它没有点击我lol –

+0

你从循环值减1,因为它的范围从n到1,但是数组的索引范围从n-1到0。 –

回答

0

那很简单:在Java中所有的索引被存储为0,而不是从1

所以,arr.length实际上返回lastArrayIndex + 1,你不能访问arr[arr.length],因为没有这样的索引元素。

作为数组的最后一个索引if arr.length-1,我们从它开始。

您的代码实际上是等于这一个(可能你会发现它更简单):

for (int i = arr.length - 1; i >= 0; i--) { 
      System.out.println(arr[i] + " "); 
     } 

对不起,张贴一个单独的答案 - 没有足够的声誉写评论。

0

请记住,数组的最后一个索引是arr.length-1。因此,如果你想打印从最后一个索引开始的值,它应该是i-1。 (你的我已经被设置为arr.length)。如果你不想拥有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 ]+" "); 


    }