- ベストアンサー
配列について質問です。(訂正版)
学校で以下のような内容のプログラムを組む課題が出されました。 「数を格納した配列の各要素の和を出力せよ。」 一応組むことはできたのですが、引っかかることがあります。 私が組んだのは下のような要素の個数は引数で定義、 各要素は標準入力で読み込むというものです。 import java.io.*; class main{ public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader( new InputStreamReader(System.in)); int n =Integer.parseInt(args[0]); int[] a = new int[n]; for(int i=0;i<n;i++){ a[i] = Integer.parseInt(br.readLine()); } int b=0; for(int i=0;i<n;i++){ b+=a[i]; } System.out.println("sum = "+b); } } ここで質問なのですが、要素数を5個にしたいので 引数で5と入力すると配列a[]はa[0]~a[5]の 計6個できると思うんです。ですから、7行目で int[] a = new int[n-1]; として要素数を5個にしたんですがこれだと5個目の読み込みでエラーになります。 なぜなんでしょうか? 長々とした文章ですみません。。。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
new int[5] として要素五個の配列を作成した場合、 作成される要素は、[0]~[4] までの「5個」です。 ([5] は作成されません) 同様に、new int[n-1]; とした場合、たとえばnが5だと、 作成される要素は、[0]~[3] までの「4個」ですよ。 もちろん、5個目を読みに行くと、アクセス違反となります。
お礼
ご指摘ありがとうございます!! 勘違いしてました・・・ こんな質問するようじゃダメダメですね・・・ 以後、がんばります!!