前提・実現したいこと
for文の中で配列を使う時、int i = 0でなければならないのかが知りたいです。
発生している問題・エラーメッセージ
該当のソースコード
for(int i = 1;i<n;i++){ System.out.print(", "+a[i]); }
試したこと
補足情報(FW/ツールのバージョンなど)
配列の問題を解いていた時に、全てfor(int i = 0だったので不安になり質問しました。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答5件
0
ベストアンサー
何をしたいのかによります。
「先頭の要素から順番に処理したい」だと、先頭要素の添え字は0なので0から始めます。
「2番目の要素から順番に処理したい」だと、2番目の要素の添え字は1なので1から始めます。
「最後の要素から逆順に処理したい」だと、こうなります。
Java
1for(int i = n-1; i>=0; i--){
投稿2020/05/03 04:06
総合スコア85901
0
配列のインデックスは0から始まるからです。
以下のコードではiが1から始まっているため初めのインデックスが表示されません。
Java
1for(int i = 1; i < n; i++){ 2 System.out.print(", " + a[i]); 3}
別に1から始めてもいいのですが、配列の要素をすべて表示したい場合は
Java
1for(int i = 1; i <= n; i++){ //最後の要素が表示されるように条件式を変更 2 System.out.print(", " + a[i - 1]); //ここで-1しないといけない 3}
というようにやや冗長になってしまいます。
そのため、配列の中身全部を扱うような処理をする場合、大抵は以下のようにi = 0
から始めます。
Java
1for(int i = 0; i < n; i++){ 2 System.out.print(", " + a[i]); 3}
######訂正
2個目の条件式を訂正しました。
このようにミスが生じる可能性があるので配列の要素全部を扱う場合はi = 0にするのが無難ですね(^^;
投稿2020/05/03 03:40
編集2020/05/03 04:11退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/05/03 03:46
0
例えば、要素がn個のxxx型配列「array」を定義したとき、
arrayはn個のxxx型領域を用意します。
それぞれの領域には
1個目のxxx型一つ分の領域:array[0]
2個目のxxx型一つ分の領域:array[1]
・
・
n個目のxxx型一つ分の領域:array[n-1]
としてアクセスします。
配列の全領域にアクセスしたい場合のfor文の()内は
配列の添え字の開始は 0なので、i=0
配列の添え字の終了は n-1なので、i<n
として、0 ~ n-1 の範囲でfor文が回るように記述します。
投稿2020/05/03 03:22
総合スコア36
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
つぎのコードも研究してみてください。
for(String s : a){ System.out.print(", " + s); }
配列の添字を記載せずに、配列 a の中身をすべて表示できます。
投稿2020/05/03 04:51
総合スコア22324
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/06 01:36
2020/05/06 02:06
2020/05/07 02:58
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。