カテゴリー
Java

for文の中のbreakの使い方を知ろう

この章ではfor文の中でif文を使うことと、さらにはfor文の中で強制的に繰り返し文を終了させるbreakについて説明します。
breakは、現在実行中の forやswitchなどの実行を強制的に終了させます。
では例をみてみましょう。1 結果は以下の通りです。
1つ
2つ
3つ
for文のブロックの中にif文が入っています。
このようにfor文にはif文を入れることが出来ます。
この例のif文の意味はbreakを使っているので、もしiが4になったらforループを抜けますよと言う意味です。
ですので、「4つ」を出力することなくループを終了します。
breakはこのように一連の流れを強制的に中止し、ブロックを抜ける時に使用します。breakをするとブロックの中のbreak以降の文は実行されません。

次はforの入れ子の中でbreakを使用する方法について説明します。111 上から2つ目のforの中でbreakを使っていますが、2つ目のforの中でbreakを使った場合、breakで抜けることができるのはbreakのあるfor文、つまり、上から2つ目のfor文だけです。
先頭のfor文は抜けることができないということです。
例の場合はfor文の中のif文の条件部分が3を超えたら、上から2つ目のfor文をbreakするのですが、breakした後はまた先頭の1に戻ってループを繰り返します。
1はif文でbreakしているので表示されません。
つまり、breakをするとブロックの中のbreak以降の文は実行されないと言うことです。
for文の入れ子の場合、内側のfor文の中にあるbreak文はbreak文があるfor文のブロックしか抜けませんが、次の例で一気に外側のブロックを抜ける方法について説明します。11 入れ子になったfor文から抜け出す場合には1という形式でbreak文に指定します。
この例では1の部分です。
ラベル名は特別の意味があるわけではなく、ただの名前ですので自由に決めてください。
次に抜けたいところに1を付けると、そこまで実行位置を移すことが出来ます。
この例では1に位置が移ります。1

カテゴリー
Java

for文の入れ子について知ろう

この章ではfor文の入れ子について学習します。
入れ子とはfor文の中にfor文がある構造です。1 では上の例の説明します。
〇 iに1を代入します。

〇「i<=3」の条件式を判定します。
ここがTRUEであるならば、1 が3回実行されて
1掛ける1=1
1掛ける2=2
1掛ける3=3
と出力されます。
つまり、外側のfor文が1周するごとに中のfor文は3周します。11
〇次にi++に戻りiに1を足します。
ここでiは2になります。

〇そして条件式の判定に入りますが、まだiは2なのでTRUEということになり、1 が3回実行されて
2掛ける1=2
2掛ける2=4
2掛ける3=6
と出力されます。

〇次にi++に戻りiに1を足します。
ここでiは3になります。

〇そして条件式の判定に入りますが、まだiは3なので,TRUEということになり、1 が3回実行されて
3掛ける1=3
3掛ける2=6
3掛ける3=9
と出力されます。

〇次にi++に戻りiに1を足します。
ここでiは4になります。

〇そして条件式の判定に入りますが、iは4で3以下ではないのでFALSEとなり、ここでループは終わりになります。1

次はfor文を使って配列のデータを取り出す方法について説明します。
初めにfor文を使わない例をみてみましょう。1 この例のように今までは1 のように1つ1つデータを足していましたが、for文を使うと以下のように簡潔に書くことが出来ます。11 「配列名.length」という構文で配列の要素数を取得出来ます。
この例の要素数は3ですので、その要素数の分だけfor文でデータを取り出します。
goukei +=test[i];を書き換えると1と同じ意味になります。
for文の流れは以下の通りです。
1周目はtest[i]のiには0が入るので、1となり、goukeiに22が代入されます。

2周目はtest[i]のiには1が入るので、1となり、goukeiに45が代入されます。

3周目はtest[i]のiには2が入るので、1となり、goukeiに79が代入されます。
ここで、注意してほしいことがあります。
goukei変数はfor文の外で宣言していますが、i変数はfor文の中で宣言しています。
この違いはブロック内で宣言した変数はブロック内でしか使うことは出来ませんが、外で宣言した変数はfor文の外でも使用することが出来ます。
つまり、以下のようにブロックの中で宣言しているiのような変数は次の例のようにfor文の外で出力することは出来ません。1

次の例は先ほどのfor文の例を書き替えています。11 先ほどの例のfor文は以下の通りです。1 このfor文を書き替えると以下のようになります。1 基本構文は次の通りです。1 図式化しますと以下の通りですが、配列testに入っている要素が順番に変数iに代入されていきます。1 次は2次元配列のデータをfor文で取り出す方法について説明します。11 結果は次の通りです。
1 2 12 3 4 23 5 6 62 7 8 83
2次元配列のデータを取り出すためにはfor文の入れ子を使用します。1 「number.length」では2次元配列の配列数である4を、1ではそれぞれの配列の中に入っている要素数である3を取得できます。
1という形式で各配列に入っている要素の数を取得できます。1111 つまり、外側のfor文が1回ループするごとに、中のfor文は3回転しています。
次の例は2次元配列のすべての値の足し算をしています。111111 結果は「154」になります。
次はある配列を別の配列にコピーする方法について説明します。1 では説明をしていきます。1 =>これが元の配列です。

1 =>そして、aの配列と同じサイズの配列bをもう一つ作ります。
サイズは1で得ることが出来ます。

そして下のfor文を使って1のデータを1にコピーします。1 最後にfor文で1の内容を出力します。11

カテゴリー
Java

for文について知ろう

この章では繰り返し文であるfor文について説明します。
何回も同じ処理を繰り返す必要があるときに、for文を使えば簡潔に記述することができます。
同じような処理を何度も繰り返すプログラムを書く場合、以下のように何度も同じ処理を書くのは面倒ですし、間違いも多くなりがちです。
では例をみてみましょう。1 このように同じ文を何度も書くのは面倒ですね。
そこで、forを使用すると繰り返し文を簡単に書くことが出来ます。
以下がfor文の基本構文です。1 forが最初に実行される時には1から始まります。
初期値式とは条件式を判定するときの初めの変数です。
初期値式は下の例で言えば1です。
次に初期値式を元に条件式を判定してTRUEであるならば、処理文が実行されることになります。
条件式は下の例で言えば1です。
処理文が実行された後に増減式において、初期値を足したり引いたりする行為を行います。
増減式は下の例で言えば1です。
増減式は1のようにデクリメントの記述もできます。

ではforの例を詳しく説明します。1 結論から言うと猫と言う文字列を3回出力します。
では説明をしていきます。
〇初めにiに初期値の1をセットします。
初期値は1ではなくても自由に決められます。

〇 「i<=3」の条件式を判定します。
ここがTRUEですので1を実行します。
ここで1回目の「猫」を出力します。

〇それからi++で iに1を足し、iは2になります。

〇そしてまた条件式1の判定に入り、iは2ですので、TRUEとなり1を実行します。
ここで2回目の「猫」を出力します。

〇それからi++で iに1を足し、iは3になります。

〇そしてまた条件式1の判定に入り、iは3ですので、TRUEとなり1を実行します。
ここで3回目の「猫」を出力します。

〇それからi++で iに1を足し、iは4になります。

〇そしてまた条件式1の判定に入り、iは4ですので、条件式はfalseになりループを終了します。
では以下の例をfor文で書き替えてみましょう。1 結果は以下の通りです。1 この例の場合は1回まわるごとにiがインクリメントされて1の中のiに代入されます。
条件式は1ですので、iには1から5までが代入されます。

カテゴリー
Java

switch文で占いを作ろう

この章ではswitch文で占いを作成します。1111Math.random()について説明します。
MathとはMathクラスを意味しますが、まだクラスの意味は説明していませんので、形だけを覚えてください。1 Math.random()は0.0以上1.0未満のランダムな値を返しますので、double型の変数で受け取ります。
ではMath.random()の例を見てみましょう。1 結果はその時の出力により毎回違います。1 では今度は乱数を整数で受け取ってみましょう。1 ランダムな値を整数で受け取りたい場合には1 のように1でキャストをして、Math.randomに整数を掛けます。
10を掛けた場合には0から9までの乱数を得られます。
結果はint型変数で受け取ります。
占いの例では7を掛けているので、0から6までの乱数を得ることが出来ます。
キャストについては学習済みですが、復習してみましょう。
基本的には大きい型から小さい型への変換は禁止していますが、どうしても大きい型から小さい型へ変換したい場合はキャスト演算子を使って強制的に型変換を行う方法があります。
この例の場合にはdouble型の数値をint型に変えるので1でキャストします。
キャストする対象が例のような式の場合にはカッコを1のように付けてから、intでキャストします。
では例に戻りますが、kazuには0から6までの整数値がランダムに入ります。1 例えばkazuが0の場合にはunmeiには大吉が入りますので以下の箇所で一致します。1 そして、最後に以下の箇所で出力します。1 占いの結果は毎回違いますので、以下のようになります。1

カテゴリー
Java

switch文について知ろう

この章ではswitch文について説明します。
switch文はifと同じで条件分岐を行うことが出来ます。
switchは1の式の部分に条件判定させる式を記述し、caseでは判定する値を記述します。
下の基本構文を見てください。1111 「switch (式 )」の式の値と「caseの値」が一致したときにはcaseからbreakまでのプログラムを実行します。
breakは一連の流れを強制的に中止したい時に使用します。
つまり、switch文でbreakを使うとswitchのブロックを抜けることになります。
ブロックとは「{」から「}」までの内容です。
ここで、注意してほしい事は「switch (式 )」の中の「式」は整数型の変数や式もしくはchar型の変数などを入れても大丈夫ですが、doubleや floatの変数や式、そして1は入れることはできません。
では実際にswitch文の例を見てみましょう。11 numberの値が1の場合は1以下の1を実行します。
numberの値が2の場合は1以下の1を実行します。
numberの値が3の場合は1以下の1を実行します。
numberの値が1、2、3以外の場合は1以下の1を実行します。
結果はnumberは 3で1と一致しますので、「3です」が出力されます。1 先ほどのswitch文をif文で書き換えると以下のようになります。1 switch文では文字列も判定することが出来ますので例をみてみましょう。
文字列の判定なのでcaseの値をダブルクォートで囲んでください。11

カテゴリー
Java

if文で星座を判定しよう

この章ではif文で星座の判定を書いてみましょう。
ユーザーに誕生月と誕生日を入力させて、それに対して星座を出力するプログラムです。
ここで使っているif文は入れ子になっています。
つまり、if文の中にif文が入っている構造になっています。
また、ユーザーに入力させるにはBufferedReaderクラスを使うのですが、BufferedReaderクラスの説明は「キーボードの入力の値を受け取ろう」の章で説明します。
では例をみてみましょう。
少し長いですが、if文が繋がっているだけです。111111111111111 この章はif文の学習なのでBufferedReaderクラスやreadLineについては理解しなくても結構です。
BufferedReaderクラスについては「キーボードの入力の値を受け取ろう」の章で説明します。
ユーザーに入力してもらう仕組みは以下のBufferedReaderクラスが行います。
紙面の都合で2行で書いていますが、1行で書いても結構です。1 さらにBufferedReaderクラスを使用するためにはブログラムの冒頭に1と書きます。
importは他のファイルを取り込む時に使用します。
では次の箇所の説明をしますが、この章はifの学習ですので、この時点で理解する必要はありません。1 =>この箇所はユーザーが入力したものをlineに代入しています。
つまり、この箇所でプログラムが入力待ちの状態になるので、好きな数値を入力します。
例えば以下の通り、1と、入力しますとこの1がlineに代入されます。
readLineは1行のテキストを読み込むという意味になります。1

では次の箇所の説明をします。1 =>この箇所はキーボードから入力したデータをint型の整数値に変換しています。
先ほど1という数値を入力したのに、なぜまたint型整数に変換しているのかというと、コマンドプロンプトで入力したのは実際には数値ではなく、1という形式の文字列です。
ですので、この文字列を整数値に変換する必要があるのです。
int型の整数値に変換する方法は以下の通りです(これらはクラスやメソッドといわれるものを使用しているので、今は分からなくても結構ですが、構文は覚えておいてください)。1 この例では2か所でreadLineを使って、誕生日の日と月を入力させています。
ではif文の説明に入ります。
これからif文の入れ子について説明します。
この例では外側のif文でmonthの数値が1から12までのどの数値なのかを確認します。
次に内側のif文で入力させたdayの値により分別をします。
例えば1月は山羊座か水瓶座なので,1月19日までが山羊座で、1月20日からが水瓶座になります。
ですので、入れ子の中の条件式は「&&」で連結して、1という表現で書きます。1 どれにも当てはまらない時には「間違い」が出力されます。
このように内側のif文は外側のif文での条件をさらに絞りたい場合に使用します。
つまり、入力された月は1月なので、さらに入力された日をもとに山羊座か水瓶座のどちらかを調べましょうと言うことです。
次は以下の説明ですが、この箇所は「例外処理について知ろう」の章で説明しますので、ここではわからなくて結構です。
簡単に説明しますと、ここは例外処理と呼ばれるものです。
つまり、この例では数字以外のものが入力されたら1と出力されます。
例外処理は文字通り、数値以外のものが入力されたなどの予想以外の動作が行われた際の処理です。1 今は例外処理を分からなくてもいいですが、構文を書いておきます。
詳しくは「例外処理について知ろう」の章で説明します。1 これで星座判定の説明は終わりますが、
結果は例えば以下のように表示されます。1

カテゴリー
Java

論理演算子について知ろう

この章では論理演算子について説明します。
前の章でif文について説明しましたが、論理演算子は条件式をもっと細かく表現したい時に使用します。
では例を見てみましょう。1 上の例は論理演算子「&&」を使った例です。
「&&」は英語のandと同じ意味ですので、この例の条件式はnumber1とnumber2が同じで、さらにnumber1はnumber3より大きいという意味です。
「&&」は「&&」を挟んだ両辺の条件式が2つともTRUEの場合のみ全体の条件式がTRUEとなります
補足ですが、紙面の都合で条件式を2行で書いていますが1行で書いていただいても結構です。
結果は「TRUEです」です。

その他の論理演算子について説明します。
「||」は「||」を挟んだ左右の値のどちらか一方がTRUEの場合に条件式がTRUEとなります。1

カテゴリー
Java

if文について知ろう3

この章でもif文について説明します。
条件式が複数ある場合、つまり細かい条件を設定したい場合には1を使います。
これまでのif文は条件に合うか合わないかを判断するのみのプログラムでしたが、条件1に合うか、もしくは条件2に合うか、どちらにも合わないかというような条件の複数指定ができるのが1です。
具体的には、次のような書式になります。11 なお、else if (条件) はいくつでも指定することができます。
では例をみてみましょう。1 この例ではaとbは同じ値ですので、else以下が実行されます。
結果は「同じ」を出力します。

カテゴリー
Java

if文について知ろう2

この章でもif文について説明します。
「if文について知ろう1」ではFALSEである場合はif文は実行されませんでしたが、条件式がFALSEである場合にもif文を実行させたい場合は、elseを使います
つまりelseを付け加えることにより、条件式がFALSEのときにelse以下のブロックを実行させることが出来ます。1 では例をみてみましょう。1 この例ではifの条件式1がFALSEなので、else以下の1が実行されます。

次の例に進みます。1 変数には有効範囲がありますが、変数の有効範囲はブロックの中のみです。
例えばこの例ではif文内で1のように宣言と初期化を行っていますが、この変数aをifの外で、1のように出力することは出来ません。
つまり、以下のようにエラーが出ます。1 エラー表示の中に9という数値が出ていますが、これは9行目にエラーが出ていることを意味しますので、このようなエラーが出ましたら、この表示を参考にして直してください。
エラーはプログラムを書いていると必ず発生しますので、このエラーの行数を元に修正を行っていきます。
次は文字列同士が一致しているのかどうかを調べる方法について説明します。1 1
比較したい変数や文字列をaの部分に書いて、bの部分にも文字列や変数を書きます。
以下のように文字列を直接書いて比較してもいいです。
1 文字列同士が同一であればTRUEを返し、異なればFALSEが返されます。
結果は文字列同士が同一なので「正しいです」が出力されます。

カテゴリー
Java

if文について知ろう1

この章ではif文について説明します。
例えば、日常の場面で今日、雨ならば家でDVDを見て、晴れならばデパートに買い物に行くと考えることがあると思います。
これをプログラム上で表現するためにはifを使います。
ifは英語でも使われていますね。
英語でifは「もしも」と言う意味ですが、プログラムのifも同じ意味です。1 条件式は条件を満たしていればTRUEを返し、条件を満たしていないならばFALSEを返します。
そして、TRUEの時に条件式が実行されます。
TRUE, FALSEは後ほど説明します。
条件式には下の表のように比較演算子を使って11などを11のような記号を使って表現します。
11 ではif文の例を見てみましょう。1 結果は「40才です」になります。
if (number >= 20)の中の「>=」は比較演算子で以下の意味があります。1 numberの値は40で、20より大きいので,条件式の1はTRUEになり、以下の部分が実行されます。1
では何がtrueで何がfalseか見てみましょう。
この例ではnumberは40で、20より大きく条件を満たしているのでTRUEになります。
40が20より大きいのは当たり前ですが、これが条件を満たしていると考えます。
逆にnumberが10であるならば10は20より小さいので条件を満たしていないので、FALSEになります。
falseの場合はif文は実行されず、無視されます。
このように条件を満たしていることをTRUE、条件を満たしていないことをFALSEと言います。
また、TRUEのことを真、FALSEのことを偽とも呼びます。

次は条件式がFALSEの例を見てみましょう。1 初めの例との違いはint numberの値を10に変えただけです。
結果は何も表示されません。
なぜかと言いますと1の部分が条件を満たしていないからです。
つまりFALSEになり,ブロックの中は実行されません。

では次の例に進みましょう。1 boolean bには1の実行結果であるFALSEが入ります。
変数bの型はTRUEやFALSEが入るのでbooleanになります。
条件式がFALSEの場合にはif文は実行されないと覚えておきましょう。