前回の続き。簡単なメモだから箇条書きにしてある。
@Contents
関係演算子 -> 条件分岐や繰り返しに使用
演算子と用例 | 説明 |
---|---|
a > b | aはbより大きいかどうか |
a < b | aはbより小さいかどうか(未満) |
a >= b | aはbより大きいか等しいかどうか(以上) |
a <= b | aはbより小さいか等しいかどうか(以下) |
a == b | aと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
関係演算子の演算結果はtrue
かfalse
の真偽値として表示される。
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
- 3つの内、どれか1つでも満たせば
- 例:
!
:括弧で囲った条件の演算結果を逆にする性質(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);
}
}
}
}
console
for(初期化式; 繰り返すための条件式; 増やすか減らすか)
- 初期化式はfor文の実行時、最初に呼ばれるもので2回目以降は実行されない
- 繰り返しのための条件式でループ回数を決定
- 最後にループのための数値(ループカウンタ)を調整
- 入れ子が使える
- カウンタは
i
,j
,k
……と使っていくのが通例
++
:インクリメント。1加算(カウントアップ)- 例:
a++
(++a
、a += 1
でも可)
- 例:
--
:デクリメント。1減算(カウントダウン)- 例:
a--
(--a
、a -=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;
:処理結果を元の変数に戻す- 処理結果用の変数を用意する必要がないので便利
- 無限ループに気を付ける
- フリーズや再起動の原因
- こまめにソースコードを保存
- フリーズや再起動の原因
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回目は
true
・false
に関係なく実行される
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
:残りのコードをスキップして、ループの先頭に戻ってを続けるための仕組み