この章ではswitch文について説明します。
switch文はifと同じで条件分岐を行うことが出来ます。
switchはの式の部分に条件判定させる式を記述し、caseでは判定する値を記述します。
下の基本構文を見てください。 「switch (式 )」の式の値と「caseの値」が一致したときにはcaseからbreakまでのプログラムを実行します。
breakは一連の流れを強制的に中止したい時に使用します。
つまり、switch文でbreakを使うとswitchのブロックを抜けることになります。
ブロックとは「{」から「}」までの内容です。
ここで、注意してほしい事は「switch (式 )」の中の「式」は整数型の変数や式もしくはchar型の変数などを入れても大丈夫ですが、doubleや floatの変数や式、そしては入れることはできません。
では実際にswitch文の例を見てみましょう。 numberの値が1の場合は以下のを実行します。
numberの値が2の場合は以下のを実行します。
numberの値が3の場合は以下のを実行します。
numberの値が1、2、3以外の場合は以下のを実行します。
結果はnumberは 3でと一致しますので、「3です」が出力されます。 先ほどのswitch文をif文で書き換えると以下のようになります。 switch文では文字列も判定することが出来ますので例をみてみましょう。
文字列の判定なのでcaseの値をダブルクォートで囲んでください。
投稿者: 無漏路
if文で星座を判定しよう
この章ではif文で星座の判定を書いてみましょう。
ユーザーに誕生月と誕生日を入力させて、それに対して星座を出力するプログラムです。
ここで使っているif文は入れ子になっています。
つまり、if文の中にif文が入っている構造になっています。
また、ユーザーに入力させるにはBufferedReaderクラスを使うのですが、BufferedReaderクラスの説明は「キーボードの入力の値を受け取ろう」の章で説明します。
では例をみてみましょう。
少し長いですが、if文が繋がっているだけです。 この章はif文の学習なのでBufferedReaderクラスやreadLineについては理解しなくても結構です。
BufferedReaderクラスについては「キーボードの入力の値を受け取ろう」の章で説明します。
ユーザーに入力してもらう仕組みは以下のBufferedReaderクラスが行います。
紙面の都合で2行で書いていますが、1行で書いても結構です。 さらにBufferedReaderクラスを使用するためにはブログラムの冒頭にと書きます。
importは他のファイルを取り込む時に使用します。
では次の箇所の説明をしますが、この章はifの学習ですので、この時点で理解する必要はありません。 =>この箇所はユーザーが入力したものをlineに代入しています。
つまり、この箇所でプログラムが入力待ちの状態になるので、好きな数値を入力します。
例えば以下の通り、1と、入力しますとこの1がlineに代入されます。
readLineは1行のテキストを読み込むという意味になります。
では次の箇所の説明をします。 =>この箇所はキーボードから入力したデータをint型の整数値に変換しています。
先ほど1という数値を入力したのに、なぜまたint型整数に変換しているのかというと、コマンドプロンプトで入力したのは実際には数値ではなく、という形式の文字列です。
ですので、この文字列を整数値に変換する必要があるのです。
int型の整数値に変換する方法は以下の通りです(これらはクラスやメソッドといわれるものを使用しているので、今は分からなくても結構ですが、構文は覚えておいてください)。 この例では2か所でreadLineを使って、誕生日の日と月を入力させています。
ではif文の説明に入ります。
これからif文の入れ子について説明します。
この例では外側のif文でmonthの数値が1から12までのどの数値なのかを確認します。
次に内側のif文で入力させたdayの値により分別をします。
例えば1月は山羊座か水瓶座なので,1月19日までが山羊座で、1月20日からが水瓶座になります。
ですので、入れ子の中の条件式は「&&」で連結して、という表現で書きます。 どれにも当てはまらない時には「間違い」が出力されます。
このように内側のif文は外側のif文での条件をさらに絞りたい場合に使用します。
つまり、入力された月は1月なので、さらに入力された日をもとに山羊座か水瓶座のどちらかを調べましょうと言うことです。
次は以下の説明ですが、この箇所は「例外処理について知ろう」の章で説明しますので、ここではわからなくて結構です。
簡単に説明しますと、ここは例外処理と呼ばれるものです。
つまり、この例では数字以外のものが入力されたらと出力されます。
例外処理は文字通り、数値以外のものが入力されたなどの予想以外の動作が行われた際の処理です。 今は例外処理を分からなくてもいいですが、構文を書いておきます。
詳しくは「例外処理について知ろう」の章で説明します。 これで星座判定の説明は終わりますが、
結果は例えば以下のように表示されます。
論理演算子について知ろう
この章では論理演算子について説明します。
前の章でif文について説明しましたが、論理演算子は条件式をもっと細かく表現したい時に使用します。
では例を見てみましょう。 上の例は論理演算子「&&」を使った例です。
「&&」は英語のandと同じ意味ですので、この例の条件式はnumber1とnumber2が同じで、さらにnumber1はnumber3より大きいという意味です。
「&&」は「&&」を挟んだ両辺の条件式が2つともTRUEの場合のみ全体の条件式がTRUEとなります
補足ですが、紙面の都合で条件式を2行で書いていますが1行で書いていただいても結構です。
結果は「TRUEです」です。
その他の論理演算子について説明します。
「||」は「||」を挟んだ左右の値のどちらか一方がTRUEの場合に条件式がTRUEとなります。
if文について知ろう3
if文について知ろう2
この章でもif文について説明します。
「if文について知ろう1」ではFALSEである場合はif文は実行されませんでしたが、条件式がFALSEである場合にもif文を実行させたい場合は、elseを使います。
つまりelseを付け加えることにより、条件式がFALSEのときにelse以下のブロックを実行させることが出来ます。 では例をみてみましょう。 この例ではifの条件式がFALSEなので、else以下のが実行されます。
次の例に進みます。 変数には有効範囲がありますが、変数の有効範囲はブロックの中のみです。
例えばこの例ではif文内でのように宣言と初期化を行っていますが、この変数aをifの外で、のように出力することは出来ません。
つまり、以下のようにエラーが出ます。 エラー表示の中に9という数値が出ていますが、これは9行目にエラーが出ていることを意味しますので、このようなエラーが出ましたら、この表示を参考にして直してください。
エラーはプログラムを書いていると必ず発生しますので、このエラーの行数を元に修正を行っていきます。
次は文字列同士が一致しているのかどうかを調べる方法について説明します。
比較したい変数や文字列をaの部分に書いて、bの部分にも文字列や変数を書きます。
以下のように文字列を直接書いて比較してもいいです。
文字列同士が同一であればTRUEを返し、異なればFALSEが返されます。
結果は文字列同士が同一なので「正しいです」が出力されます。
if文について知ろう1
この章ではif文について説明します。
例えば、日常の場面で今日、雨ならば家でDVDを見て、晴れならばデパートに買い物に行くと考えることがあると思います。
これをプログラム上で表現するためにはifを使います。
ifは英語でも使われていますね。
英語でifは「もしも」と言う意味ですが、プログラムのifも同じ意味です。 条件式は条件を満たしていればTRUEを返し、条件を満たしていないならばFALSEを返します。
そして、TRUEの時に条件式が実行されます。
TRUE, FALSEは後ほど説明します。
条件式には下の表のように比較演算子を使ってなどをやのような記号を使って表現します。
ではif文の例を見てみましょう。 結果は「40才です」になります。
if (number >= 20)の中の「>=」は比較演算子で以下の意味があります。 numberの値は40で、20より大きいので,条件式のはTRUEになり、以下の部分が実行されます。
では何がtrueで何がfalseか見てみましょう。
この例ではnumberは40で、20より大きく条件を満たしているのでTRUEになります。
40が20より大きいのは当たり前ですが、これが条件を満たしていると考えます。
逆にnumberが10であるならば10は20より小さいので条件を満たしていないので、FALSEになります。
falseの場合はif文は実行されず、無視されます。
このように条件を満たしていることをTRUE、条件を満たしていないことをFALSEと言います。
また、TRUEのことを真、FALSEのことを偽とも呼びます。
次は条件式がFALSEの例を見てみましょう。 初めの例との違いはint numberの値を10に変えただけです。
結果は何も表示されません。
なぜかと言いますとの部分が条件を満たしていないからです。
つまりFALSEになり,ブロックの中は実行されません。
では次の例に進みましょう。 boolean bにはの実行結果であるFALSEが入ります。
変数bの型はTRUEやFALSEが入るのでbooleanになります。
条件式がFALSEの場合にはif文は実行されないと覚えておきましょう。
2次元配列について知ろう
この章では2次元配列について説明します。
2次元配列は行と列の2次元で配列を考えます。
原理的には3次元、4次元なども可能ですが、混乱の元ですので、この本では2次元のみを説明します。
2次元配列を表にすると以下の通りです。 詳しい説明は例のあとで行います。 2次元配列も通常の配列と同じように宣言を行ってからデータを入れます。 では例の2次元配列について詳しく説明します。
行の要素数はと、合計して4つあります。
これは1次元配列に相当するものです。
列の要素数はそれぞれの1次元配列に相当するnumber[0]、number[1]、number[2]、number[3]に入っている要素数なので3になります。
つまり、配列の中に配列が入っている状態と言えます。
さらに詳しく説明します。
〇 1次元の配列number[0]にはの合計3つの要素が入っているので2次元配列になっています。
number[0][0]は0番目の配列number[0]の0番目の要素と言う意味です。
number[0][1]は0番目の配列number[0]の1番目の要素と言う意味です。
number[0][2]は0番目の配列number[0]の2番目の要素と言う意味です。
〇 1次元の配列number[1]にはの合計3つの要素が入っているので2次元配列になっています。
number[1][0]は1番目の配列number[1]の0番目の要素と言う意味です。
number[1][1]は1番目の配列number[1]の1番目の要素と言う意味です。
number[1][2]は1番目の配列number[1]の2番目の要素と言う意味です。
〇 1次元の配列number[2]にはの合計3つの要素が入っているので2次元配列になっています。
number[2][0]は2番目の配列number[2]の0番目の要素と言う意味です。
number[2][1]は2番目の配列number[2]の1番目の要素と言う意味です。
number[2][2]は2番目の配列の2番目number[2]の要素と言う意味です。
〇 1次元の配列number[3]はの合計3つの要素が入っているので2次元配列になっています。
number[3][0]は3番目の配列number[3]の0番目の要素と言う意味です。
number[3][1]は3番目の配列number[3]の1番目の要素と言う意味です。
numbe [3][2]は3番目の配列number[3]の2番目の要素と言う意味です。
図にすると次の通りです。
では例の詳細について説明します。
型をint,配列名をnumberにして2次元配列を作っています。
int[][] number;
=>まず初めに2次元配列の宣言をします。
number=new int[4][3];
=>次に配列の要素をどんな型でいくつ作るかを決めて、new演算子で作成します。
つまり、int型の要素を行の要素4つと列の要素 3つで作っています。
そして、作ったものを配列numberに代入しています。
次は2次元配列にデータを入れる方法を説明します。
new int[4][3];のように4つの行の要素と4つの行の要素それぞれには3つの値があるので、という構文でデータを入れます。 また以下のような形式で、配列の作成とデータの挿入をまとめて書くこともできます。 では例を見てみましょう。 では説明をしていきます。
この章では配列について説明します。
変数は1つの値しか保存できませんが、配列は複数のデータをひとまとめに扱うことが出来ます。
変数と配列の違いを比べてみましょう。
最初の例は普通の変数で書いたプログラムです。 次は配列の例をみてみましょう。 変数の例には3つの変数が記述されていますが、一見するとこの3つの変数はお互いに関連しているように見えますが、1つ1つの変数は全く別々の変数です。
専門的に言いますと変数の保存場所が3つとも別と言う意味です。
これらの変数同士を結び付けているのはプログラマ自身です。
int test1=22;
int test2=23;
int test3=33;
これらの複数の変数を1つの変数として扱いたい場合には配列を使うと便利です。
例えば人の身長、体重、年齢などを別々の変数で管理するのではなく、ひとまとめに管理したい場合に配列を使います。
では配列の作り方について説明します。
配列を使うには初めに配列の宣言をします。 この例では「int[] test;」の部分が配列の宣言です。
double型のデータを入れたいのであればと書きます。
stringのデータを入れたいのであればです。
宣言の後にすることは配列に入れるデータの数を決めることです。 test=new int[3];
=>「配列の宣言」をした後は配列の要素(データ)をどんな型でいくつ作るかを決めて、new演算子で作成します。
この例では配列の要素をint型で3つ作っています。
そして、作ったものを配列(この例ではtest)に代入します。
次は配列の宣言と要素数の作成を1行で書く方法について説明します。 int[] test;とは以下のように1つにまとめることが出来ます。
次は作った配列にデータを入れる方法について説明します。
基本構文は以下の通りです。 この例ではint型の要素を3つ持った配列を作ったので、以下のようにデータを入れていきます。 [ ]の中に[0][1][2]と数値が入っていますが、この数値をインデックス番号もしくは添え字と言います。
添え字は0から順番に番号が付けられていきます。
添え字とは配列のデータがどこに保管してあるのかを管理する番号です。
例えばコインロッカーには番号が振ってありますが、この番号があるからこそ、どこに荷物があるのかが分かるように、添え字も考え方は同じです。
つまり、この例は以下のような意味があります。
配列testの0番目には22という要素が入っていて、配列testの1番目には23という要素が入っていて、配列testの2番目には34という要素が入っています。
次にで合計してで出力しています。
次の例は配列の宣言とその配列にデータを入れる作業を簡単に記述する方法について説明します。 以前は と、記述していましたが、
例のようにと記述すれば1行で済みます。 また、他の書き方としてのように書くことが出来ます。
基本構文は以下の通りです。
では次は参考までにStringで配列を作ってみましょう。
今まで見てきた配列の構造と作り方は同じです。 結果は次の通りです。
次は配列に要素が何個入っているかを調べる方法について説明します。
では例をみてみましょう。 配列の中の要素数を調べるにはと、書きます。
配列名とlengthの間にがあるので気を付けてください。
結果はです。
エスケープシーケンスについて知ろう
インクリメント演算子とデクリメント演算子
この章ではインクリメント演算子とデクリメント演算子について説明します。
インクリメント演算子を加算子、デクリメント演算子を減算子とも言います。
インクリメント演算子とは変数の値に1を加算すると言う意味でまたはのように記述します。
x++ を後置インクリメント演算子と言います。
++xを前置インクリメント演算子と言います。
デクリメント演算子とは変数の値を1だけ減算すると言う意味でまたはのように記述します。
x- -を後置デクリメント演算子と言います。
– -xを前置デクリメント演算子と言います。 では例をみてみましょう。 number = number + 1;は右辺であるnumber + 1の結果である3を計算してから左辺のnumberに代入しています。
++number2;は2に1を足しているので3になります。
number3++;も2に1を足しているので3になります。
– -number4は2から1を引いているので1になります。
number5- – も2から1を引いているので1になります。
このように単独で前置デクリメント演算子や後置インクリメント演算子を使う時には結果は同じになります。
しかし、式の中で使用すると結果が違ってきますので、以下の例を見てみましょう。 num=++number+1;はnumberの値がインクリメントで1加算されてから、さらに1を足してnumに代入されますのでの結果は4になります。
この時にはnumberはインクリメントで3になっているのでの結果は3になります。
num2=number3++ +1;はを先に計算してnum2に結果を代入してから、number3に1を足しますのでは3になります。
つまり、最初の計算では「++」は無視されます。
num2に結果を代入してからnumber3に1が加算されますのでは3になります。
前置デクリメント演算子と後置デクリメント演算子も原理は同じなので説明は省きます。