未分類

関係演算子と条件

投稿日: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

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

関連記事

サンプルイメージ

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

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

サンプルイメージ

変数

変数のしくみを知る プログラムを実行するとき、いろいろな値を記憶させながら処理をしていきます。例えば ユーザーが入力した数値を画面に出力する というプログラムについて考えてみましょう。まず、数値をどこ …

サンプルイメージ

List、Mapインターフェイス

     ArrayListとは、配列とよく似ています。値の集合を扱うときに利用します。 リストは要素が追加された順番を保持します。又重複した要素もそのまま保持することができます。 下記のコードでは、 …

サンプルイメージ

練習問題(for)解答例

以下に問題の解答例を記述します。 いかがでしょうか。多くの人は文法は理解できたが、それをどこでどのように使えばいいのかわからないと思っている人がほとんどでしょう。 何かを作成するまで処理の流れや組み合 …

Android 図形、画像の描画

     ソースコードの解説 GraphicsExはプログラムの本体となるクラスです。 GraphicsView.javaを解説します。 ①ラインの描画(25行目) 描画前に「ライン幅」と「描画スタイ …