Javaの制御構文をおさらい

前回の続き。簡単なメモだから箇条書きにしてある。

@Contents

関係演算子 -> 条件分岐や繰り返しに使用

演算子と用例説明
a > baはbより大きいかどうか
a < baはbより小さいかどうか(未満)
a >= baはbより大きいか等しいかどうか(以上)
a <= baはbより小さいか等しいかどうか(以下)
a == baとbは等しいかどうか
a != b(!は否定の意)aとbは等しくないかどうか
public class Operator {
    public static void main (String[] args) {

        int a = 3;
        int b = 2;

        System.out.println(a > b);
        System.out.println(a < b);
    }
}
true
false

関係演算子の演算結果はtruefalseの真偽値として表示される。

if -> 分岐を行う

public class SampleIf {
    public static void main(String[] args) {

        int score = 59;

        if (score == 100) {
            System.out.println("It's a perfect score!");
        } else if (score >= 80) {
            System.out.println("Good job!");
        } else if (score >= 60) {
            System.out.println("You've passed!");
        } else {
            System.out.println("I'll give you a make-up class");
        }
    }
}
I'll give you a make-up class
  • else ifはいくつでも付け足すことが可能
  • else ifを使うときは順番が大切(逐次的に処理される)
    • 上記の例では大きい順に並べる
  • if文の中にif文(else,else if含む)を書くこともできる
    • 入れ子ネストという
    • インデントを1つ深くする
  • 複数文を記述/実行可能
  • 4重や5重の入れ子にならないように工夫が必要

論理演算子 -> 複数の条件を使って判断

public class Triangle {
    public static void main(String[] args) {

        int a = 8;
        int b = 6;
        int c = 8;

        if (a == b && b == c && c == a) {
            System.out.println("It's an equilateral triangle.");
        } else if (a == b || b == c || c == a) {
            System.out.println("It's an isosceles triangle.");
        } else {
            System.out.println("It's a scalene triangle.");
        }
    }
}
It's an isosceles triangle.
  • &&:両方を満たせばtrue(AND)
    • 例:条件A && 条件B && 条件C
  • ||:どちらか片方を満たせばtrue(OR)
    • 例:条件A || 条件B || 条件C
      • 3つの内、どれか1つでも満たせばtrue
  • !:括弧で囲った条件の演算結果を逆にする性質(NOT)
    • 例:!(score < 60)score >= 60は同じ意味
    • !(条件A && 条件B) は !(条件A) || !(条件B))
    • !(条件A || 条件B) は !(条件A) && !(条件B)に置き換え可能(ド・モルガンの法則)

for -> 繰り返し

条件:1から100までの数値を順番に出力する(7の倍数、7が入っている数字のときはclap!の文字列を出力する)。

public class SampleFor {
    public static void main(String[] args) {

        for (int i = 1; i <= 100; i++) {
            if (i % 7 == 0 || i % 10 == 7 || i / 10 == 7) {
                System.out.println("clap");
            } else {
                System.out.println(i);
            }
        }
    }
}
  • for(初期化式; 繰り返すための条件式; 増やすか減らすか)
    • 初期化式はfor文の実行時、最初に呼ばれるもので2回目以降は実行されない
    • 繰り返しのための条件式でループ回数を決定
    • 最後にループのための数値(ループカウンタ)を調整
    • 入れ子が使える
  • カウンタはi,j,k……と使っていくのが通例
  • ++:インクリメント。1加算(カウントアップ)
    • 例:a++++aa += 1でも可)
  • --:デクリメント。1減算(カウントダウン)
    • 例:a----aa -=1でも可)

while -> ループ回数を変更可

public class SampleWhile {
    public static void main(String[] args) {

        int num = 2;

        while (num < 1024) {
            num = num * 2;
            System.out.println(num);
        }
    }
}
4
8
16
32
64
128
256
512
1024
  • while(条件式)
    • 何回回せるかわからない時や、処理結果によってループ回数を変えたい時に使用
  • num = num * 2;:処理結果を元の変数に戻す
    • 処理結果用の変数を用意する必要がないので便利
  • 無限ループに気を付ける
    • フリーズや再起動の原因
      • こまめにソースコードを保存

break -> 敢えての無限ループ

public class SampleBreak {
    public static void main(String[] args) {

        int i = 1;

        while (true) {
            System.out.println(i);
            i++;

            if (i > 10) {
                break;
            }
        }
    }
}
1
2
3
4
5
6
7
8
9
10
  • break:あえてwhile文の条件式が永遠とtrueになる記述をして無限ループとさせることもある
    • その際はブロック内の記述でループを終了させなければならない

switch -> もう一つの条件分岐

public class SampleSwitch {
    public static void main(String[] args) {

        int num = 4;

        switch (num) {
        case 1:
            System.out.println("Very dissatisfied");
            break;
        case 2:
            System.out.println("A little dissatisfied");
            break;

        case 3:
            System.out.println("I can't say either");
            break;
        case 4:
            System.out.println("A little satisfied");
            break;
        case 5:
            System.out.println("Very satisfied");
            break;
        default:
            System.out.println("It's a non-existent option");
            break;
        }
    }
}
A little satisfied
  • 式:整数の条件式によって分岐を行う
  • value:整数で具体的な数値
  • case:1つ以上複数回記載可能
  • default:どのcaseにも一致しない時のみ実行
  • 文字や小数では処理が行えない
  • breakがないと次のcase節を実行してしまうので注意

do-while -> 先に実行

public class SampleDoWhile {
    public static void main(String args[]) {

        int num = 13;

        do {
            System.out.println("num = " + num);
            num = num - 4;
        } while (num > 0);
        System.out.println("Finished because it was below 0");

        num = -3;

        do {
            System.out.println("num = " + num);
            num = num - 4;
        } while (num > 0);
        System.out.println("Finished because it was below 0");
    }
}
num = 13
num = 9
num = 5
num = 1
Finished because it was below 0
num = -3
Finished because it was below 0
  • ブロック内のコードを実行した後に、条件式のチェックが行われる
    • whileの逆
  • 最初の1回目はtruefalseに関係なく実行される

continue -> 処理の流れを制御

public class SampleContinue {
    public static void main(String[] args) {

        for (int i = 1; i <= 10; i++) {
            if (i == 3 || i == 5) {
                continue;
            }
            System.out.println(i);
        }
    }
}
1
2
4
6
7
8
9
10
  • break:ループ処理を抜けるための命令
  • continue:残りのコードをスキップして、ループの先頭に戻ってを続けるための仕組み

To comment

@Contents
閉じる