はじめに
この記事は備忘録である。
参考書レベルの内容だが、本記事に掲載するコードについては、
間違えたものが中心となる。これは実際にコーディング中に間違えた部分を掲載し、自分で反省するために投稿するという目的によるもの。
また、後日にJavaSilver試験問題の勉強を兼ねて復習するため、深い部分の話はここでは触れない。
環境
言語:Java11、JDK13.0.2
動作環境:Windows10
for文
for文とは、条件文に基づいて、ループから抜けるまで繰り返し処理を行うための、繰り返し処理文のひとつである。回数を指定して繰り返す場合に向いている。
for ( 初期化文 ; 条件文 ; 更新文 ){
//繰り返し処理;
}
それぞれの役割はこちら。
- **初期化文** for文内部の繰り返し処理で用いる一時変数を宣言し、その初期化を行う文。カンマ`,`で区切ることで**複数の変数を宣言・初期化**できるが、そのすべてを**同じ変数型**にする必要がある(for文の外部で宣言済みの変数を除く)。
- **条件文** **真偽値**を戻す式を用いて、**繰り返し処理を続行する(`true`)**か**for文から抜ける(`false`)**かを判定する文。条件文を複数記述することはできないが、前回扱った**論理積`&&`・論理和`||`**を用いて複合条件を設定することはできる。
- **更新文** 繰り返し処理を一度終えた後、一時変数の値を変更するときの処理を書く文。初期化文同様、**複数の処理を扱う**ことが出来る。更新文が適用されるか・いつ適用になるか、は特に注意を払う必要がある。
double amount = 100000;
for (int year = 1; year < 10; year++){
amount *= 1.02;
}
System.out.println("10年後には" + amount + "円になる。");
//何かが足りない……
これだと初年度が2年目になってしまい、9回分の複利計算しかできていない。初期値の設定を間違えると回数に響く。
while文
for文と並び、繰り返し処理を行う文である。想定した条件に達するまでひたすら繰り返す場合に向いているが、for文以上に無限ループを生みやすくなっているので注意が必要。
while (条件文){
//繰り返し処理;
}
条件文についてはfor文の説明にあるものを見ていただきたい。
なお別の形として、do~while文も存在している。最低1回は繰り返し処理を行うため、必須の処理を含む場合に用いるのがよい。セミコロン;
の位置にはくれぐれも注意。
do{
//繰り返し処理;
} while (条件文);
while文実践
double amount = 100000;
int year = 0;
//今度はちゃんと初年度を0にした
while (amount <= 150000) {
amount *= 1.02;
}
System.out.println(year + "年経てば150000円を超える予定。");
//1年経たずに目標金額に届いただと……
こんどはyear++
をwhile文の処理に含めなかったために最終出力がおかしくなってしまった。
終わりに
すごく便利な文だが、勘違いを残したままだととんでもない結果につながる危険も持っている。金利計算やアルゴリズムなど、絶対に間違えられない領域に使われるためしっかり理解していきたい。
今回の参考に、Javaの資格試験の本を乗せたが、{ }
(中かっこ)がついてないとか入れ子の構造が深くなっていて理解に時間がかかるとか、インクリメント
・デクリメント
が大量に敷き詰められているとか。理解力と集中力の両方が求められるよい問題がそろっている。
参考
出来るだけ自分で変数や式を書いてコンパイルしているので、完全に引用する場合はその旨記述する。
Java SE11 Silver 問題集(通称黒本)