Help us understand the problem. What is going on with this article?

初心者から始めるJava、for文・while文

はじめに

この記事は備忘録である。
参考書レベルの内容だが、本記事に掲載するコードについては、
間違えたものが中心となる。これは実際にコーディング中に間違えた部分を掲載し、自分で反省するために投稿するという目的によるもの。
また、後日にJavaSilver試験問題の勉強を兼ねて復習するため、深い部分の話はここでは触れない。

環境

言語:Java11、JDK13.0.2
動作環境:Windows10

for文

for文とは、条件文に基づいて、ループから抜けるまで繰り返し処理を行うための、繰り返し処理文のひとつである。回数を指定して繰り返す場合に向いている。

for文の基本形
for ( 初期化文 ; 条件文 ; 更新文 ){
     //繰り返し処理;
}

それぞれの役割はこちら。


  • 初期化文
  • for文内部の繰り返し処理で用いる一時変数を宣言し、その初期化を行う文。カンマ,で区切ることで複数の変数を宣言・初期化できるが、そのすべてを同じ変数型にする必要がある(for文の外部で宣言済みの変数を除く)。
  • 条件文
  • 真偽値を戻す式を用いて、繰り返し処理を続行する(truefor文から抜ける(false)かを判定する文。条件文を複数記述することはできないが、前回扱った論理積&&・論理和||を用いて複合条件を設定することはできる。
  • 更新文
  • 繰り返し処理を一度終えた後、一時変数の値を変更するときの処理を書く文。初期化文同様、複数の処理を扱うことが出来る。更新文が適用されるか・いつ適用になるか、は特に注意を払う必要がある。

for文は入れ子にして記述することができるため、より複雑な繰り返しを行うこともできるが、今回は割愛。

for文実践

amount10Years.java
double amount = 100000;

for (int year = 1; year < 10; year++){
  amount *= 1.02;
}
System.out.println("10年後には" + amount + "円になる。");

//何かが足りない……

これだと初年度が2年目になってしまい、9回分の複利計算しかできていない。初期値の設定を間違えると回数に響く。

while文

for文と並び、繰り返し処理を行う文である。想定した条件に達するまでひたすら繰り返す場合に向いているが、for文以上に無限ループを生みやすくなっているので注意が必要。

while文の基本形
while (条件文){
     //繰り返し処理;
}

条件文についてはfor文の説明にあるものを見ていただきたい。

なお別の形として、do~while文も存在している。最低1回は繰り返し処理を行うため、必須の処理を含む場合に用いるのがよい。セミコロン;の位置にはくれぐれも注意。

do~while文の基本形
do{
 //繰り返し処理;
} while (条件文);

while文実践

whileAmount150k
double amount = 100000;
int year = 0;

//今度はちゃんと初年度を0にした

while (amount <= 150000) {
    amount *= 1.02;
}
System.out.println(year + "年経てば150000円を超える予定。");

//1年経たずに目標金額に届いただと……

こんどはyear++をwhile文の処理に含めなかったために最終出力がおかしくなってしまった。

終わりに

すごく便利な文だが、勘違いを残したままだととんでもない結果につながる危険も持っている。金利計算やアルゴリズムなど、絶対に間違えられない領域に使われるためしっかり理解していきたい。
今回の参考に、Javaの資格試験の本を乗せたが、{ }(中かっこ)がついてないとか入れ子の構造が深くなっていて理解に時間がかかるとか、インクリメントデクリメントが大量に敷き詰められているとか。理解力と集中力の両方が求められるよい問題がそろっている。

参考

出来るだけ自分で変数や式を書いてコンパイルしているので、完全に引用する場合はその旨記述する。

やさしいJava 第7版

Java SE11 Silver 問題集(通称黒本)

neko_renri
この3月からインターノウス主催のプログラマカレッジに入校予定のアラサー。 就職が決まるまではカリキュラムに合わせた勉強を頑張る。 言語:Java,PHP,HTML,CSS,JavaScript,Python
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away