未分類

関係演算子と条件

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

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

関連記事

サンプルイメージ

配列の応用

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

サンプルイメージ

練習問題(クラスの利用)(前半)

      練習10-1 MarkPrinterMain1~4クラスを実行すると下図の様な実行結果となるようにMarkPrinterクラスを作成してください。 練習10-2 MarkPrinterクラ …

サンプルイメージ

演算子の優先順位

a + 2 * 5  2*5が先に評価されます。 この式では、+演算子と*演算子の2つが使われています。通常の四則演算では、たし算よりかけ算を先に計算します。これは、かけ算の方が 優先順位が高い から …

サンプルイメージ

練習問題(クラスの機能)

      練習9-1 下図の様な実行結果となるように下のプログラムの空欄を埋めて実行してください。 練習9-2 下記のような実行結果となるようにShohinクラスを作成してください。 練習9-3 下 …

Androidで神経衰弱ゲームつくりました。

       プログラムの解説 14行目のT[ ]はカードをシャッフルする領域です。 Tebanは、プログラムを制御する領域です。  0の時は、1枚目のカードをクリックします。 1の時は、2枚目のカー …