整数と配列の違いについて
2種類の問題についてお聞きしたい事があります。
整数と配列の記述についてちょっと不審なところがあるので教えてほしいのですが。
ある整数n が与えられる時、1 から n までの 1 ずつ増加する数列の和を出力せよ。
int n = sc.nextInt();
int[] a = new int[n];
int ans = 0;
for (int i = 0; i <= n; i++) {
ans += i;
}
System.out.println(ans);
長さn の数列 a (a_1, a_2, ..., a_N) が与えられる時、
この数列の和を計算し、出力せよ。
int n = sc.nextInt();
int[] a = new int[n];
for (int i = 0; i < n; i++) {
a[i] = sc.nextInt();
}
int ans = 0;
for (int x : a) {
ans += x;
}
System.out.println(ans);
簡単な問いで、もはや恒例となったansを初期化して書いてます。
nが20の時、答えはどちらも210となりますが、一応上の2つは正解となっています。
しかし、記述が異なって例えば上の問いを下のコードで書いてもエラーになり、その逆でもエラーになります。
理由はもちろん整数と配列の違いだと思いますが、1~20という定義は同じで
計算方法は結局同じじゃないのかと疑っています。
・上でa[i]がなくてもなぜ正解となれたのか?
・なぜ上だけ<=にしなければならないのか?
・なぜ上で拡張for文にしてはいけないのか?
こういった点が未だに吸収されていないので是非御教授お願いします。