2016-05-31 12 views
0

私はJavaのブートキャンプに乗っていて、配列を逆にして印刷するように指示しました。 1配列に追加された - なぜ私は取得しない私のコードは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] + " "); 
     } 

    } 

} 

である私は、いくつかの検索となどした後、それを考え出したしかし、私はここでそれを得ることはありません。私はここで他の記事を読もうとしましたが、何らかの理由でそれが私を過ぎてしまっています。皆さんを悩ませて申し訳ありませんが、私はそれを理解できるようにする必要があることを知っています。 Javaですべてのインデックスがないので、1

から、0から保存されている、arr.lengthが実際にlastArrayIndex + 1を返し、あなたがarr[arr.length]にアクセスすることはできません、:非常にシンプル

+0

この問題はおそらく解決していないので、http://codereview.stackexchange.com/こちらの方が適切でしょう。 – theblindprophet

+0

@theblindprophetありがとうございます。それを置く場所を本当に知りませんでした。それは疑問だったので、わかりませんでした。私が実際にクリックしていないということは本当にイライラしています。 –

+0

ループの値から1を減算していますが、その範囲はnから1ですが、配列のインデックスの範囲はn-1から0です。 –

答えて

0

ザッツあなたの助けをありがとうございましたそのようなインデックスを持つ要素がないためです。

配列の最後のインデックスとしてarr.length-1を指定すると、それから始まります。 - ないコメントを書くために十分な評判それを別々の答えを投稿して申し訳ありません

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

あなたのコードでは、この1(あなたはそれがより簡単でしょう可能性がある)と、実際に等しいです。

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 ]+" "); 


    } 
関連する問題