未分類

関係演算子と条件

投稿日:2020年6月27日 更新日:

条件のしくみ

これまでのコードは1文ずつ順序よく処理が行われていました。しかし、「場合に応じた処理」を行うことができます。

ゲームのスコアが良かったら・・・→ボーナスステージに行く

ゲームのスコアが悪かったら・・・→もう一度挑戦する

上記のようにJavaでも、さまざまな状況をあらわすために条件という概念を用います。

例えば、「よいスコアである」という条件を考えてみると、条件がtrueまたはfalseになる場合は次のようになります。

スコアが80点以上だった場合  →  良いスコアで条件はtrue

スコアが80点未満だった場合  →  良いスコアでない条件はfalse

条件を記述する

条件をつくるために使う>記号などは、関係演算子と呼びます。>の場合は「右辺より左辺が大きい場合にtrue」となるので、3>1はtrueとなります。1>3はfalseになります。

  • 演算子         式がtrueとなる場合
  • ==          右辺が左辺に等しい
  • !=           右辺が左辺に等しくない
  • >           右辺より左辺が大きい
  • >=          右辺より左辺が大きいか等しい
  • <           右辺より左辺が小さい
  • <=          右辺より左辺が小さいか等しい

関係演算子を使う

  • 5>3   この条件の評価はtrueです
  • 5<3   この条件の評価はfalseです
  • a==6   この条件の評価は変数aの値によって異なる
  • a!=6   この条件の評価は変数aの値によって異なる

「a==6」という条件は、変数aの値が6であった場合にtrueになります。一方、変数aの値が3や10であった場合はfalseになります。

if文のしくみ

if(良いスコアをとった) ボーナスステージに行く

if文を記述することによって、条件(「良いスコアをとった」)がtrueであった場合に、「ボーナスステージに行く」という処理を行うのです。悪いスコアだった場合には「ボーナスステージに行く」処理は行いません。実際にコードを入力してみましょう。

条件res==1がtrueであれば17行目の処理がされます。ユーザーが1以外の文字を入力したらどうなるでしょうか?res==1がfalseになるため17行目は処理されません。

したがって実行画面の10を入力したときのようになります。

ブロックにしないと?

if文では、条件がtrueのとき、複数の文を処理することもできます。このためには、{}でブロックをつくり、複数の文をまとめます。

しかし、ブロックにせず実行するとどうなるでしょうか?

if文にブロックがないため、コンパイラは、if文の内容は①だけであると解釈してしまったのです。

if~else文のしくみを知る

さらにif文のバリエーションとして、条件がfalseの場合に、指示した文を処理する構文もあります。これがif~else文です。

ユーザーが1と10を入力した場合の、2とおりの画面を示します。

if~else if~elseのしくみを知る

2つ以上の条件を判断させて処理するバリエーションです。

1を入力した場合、最初の条件はtrueになるので、①が処理される。

2を入力した場合、最初の条件がfalseとなるので今度は②が処理される。

これ以外の場合(2つの条件が共にfalseの場合)、必ず③が処理される。

if~else if~elseを使うと、複数の条件に応じた処理を行うことができます。

switch文のしくみを知る

switch文では、文内の式がcaseの後の値と一致すれば、そのあとの文から「break」までの文を処理します。どれにも当てはまらない場合は「default:」以下の文を処理します。「default:」は省略することも可能です。

下記のコードを見てくださいswitch文を使うと、if~else if~elseを簡単に記述できる場合があります。

いくつかの注意点があります。Sample5_05_5からbreak文を省いてみましょう。

実行画面を確認すると、1が入力されました。2が入力されました。1か2を入力してください。とおかしな出力となっています。

そもそもbreakという文は、文の流れを強制的に切るという役割です。

正しい位置にbreak文を入れるようにしましょう。

-未分類

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

サンプルイメージ

メソッドの引数

メソッドでさらに柔軟な処理を行うことができます。メソッドを呼び出す際に、 呼び出し元からメソッド内に何か情報(値)を渡し、その値に応じた処理を行う ということができます。メソッドに渡す情報を引数といい …

サンプルイメージ

練習問題(メソッド)

練習8-1 下記の2つのクラスがある。[WelcomeMain1.java]を実行すると下のような結果になるように[Welcome1.java]の空欄を埋めてください。        練習8-2 下記 …

サンプルイメージ

配列の応用

配列の要素数を調べるコードを記述します。配列の要素数(ハコの数)は、配列の長さ(大きさ)と呼ばれています。 Javaでは、配列要素に.(ピリオド)をはさんでlengthと記述すると、配列の要素数をあら …

サンプルイメージ

クラスライブラリのしくみ

                 今まで、クラスの基本について学びました。これまでは以下のような手順でクラスを作成してきました。 クラスを設計するコードを書く → クラスを宣言するクラスを利用するコー …

サンプルイメージ

練習問題(for文)

練習6-1 Hello1.java 次の図のように「こんにちは」を 10回表示してください。                    実行結果       練習6-2 Hello2.java 下記のプロ …