2016-05-31 4 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

Thats довольно прост: в 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] + " "); 
     } 

К сожалению для размещения его отдельный ответ - не хватает репутации для написания комментариев.

0

Помните, что последний индекс массива - arr.length-1. Поэтому, если вы хотите напечатать значение, начинающееся с последнего индекса, оно должно быть i-1. (Ваш i установлен в 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 ]+" "); 


    } 
Смежные вопросы