条件分岐は,if
もしくは switch
を用います.
文法は,C言語と同じです.典型的な例を次に示します.
if(条件式1){
// 条件式1が成り立ったときに実行される文.
}
else if(条件式2){
// 条件式2が成り立ったときに実行される文.
}
else{
// 条件式1も条件式2も成り立たなかったときに実行される文.
}
C言語の場合,条件式は int
型で表現しましたが,Java言語の場合,
Boolean
型となります.
Boolean
型は,true
もしくは false
の2値で表される型です.
C言語のようにプログラムを書くと,Boolean
型になりますので,あまり気をつけなくとも良いようになっています.
if(value = 10){
// この場合,if文の条件が Integer 型になるため,コンパイルエラーになる.
}
if(value == 10){
// こう書くと,value == 10 の結果は Boolean になるため,Javaのif文として成り立つ.
// 厳密に書けば,(value == 10) == true という条件であるが,
// 冗長であるため,value == 10 と書くほうが望ましい.
}
整数型である Integer
型の値が正負のどちらかであるかを if
文を使って判定しましょう.
以下のプログラムの.....
部分を埋めて完成させてください.
public class PositiveChecker{
public static void main(String[] args){
Integer value = 5;
if(.....){
System.out.printf("与えられた数値は正の値です: %d%n", value);
}
else if(.....){
System.out.printf("与えられた数値は0です: %d%n", value);
}
else{
System.out.printf("与えられた数値は負の値です: %d%n", value);
}
}
}
完成すれば,value
の値をいろいろと変更して,実行してみましょう.
その際,全ての分岐が網羅するには,value
をどのような値にして,何度変更すれば良いかを考えてみましょう.
$ java PositiveChecker
与えられた数値は正の値です: 5
$ java PositiveChecker
与えられた数値は負の値です: -9
$ java PositiveChecker
与えられた数値は0です: 0
....
if(value > 0){
System.out.printf("与えられた数値は正の値です: %d%n", value);
}
else if(value == 0){
System.out.printf("与えられた数値は0です: %d%n", value);
}
....
繰り返しは,for
もしくは while
を利用します.文法はC言語と同じです.
典型的な例を次に示します.
// 初期化式,継続条件式,反復式をセミコロン(;)で区切る.
for(Integer i = 0; i < 10; i++){
// iが0から9までこの文を繰り返す.
}
// for(初期化式; 継続条件式; 反復式)
Integer loop = 0;
// 継続条件式を while に指定する.
while(loop < 10){
// loopが0から9までこの文を繰り返す.
loop++;
}
// while(継続条件式)
ループ制御には,Integer
型を利用することが多いです.if
文と同じく,繰り返し文の継続条件はBoolean
型で表現されます.
また,for
文の初期化式で変数宣言が行えるようになっています.
ループを途中で抜けるには,break
,そして,
ループを途中で中断し,次の繰り返しに移行するには continue
を使うのも
C言語と同じです.
for
文を使って,1以上,100未満の奇数の値を出力しましょう.
public class OddPrinter {
public static void main(String[] args) {
// for文を使って繰り返し.
}
}
$ java OddPrinter
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85 87 89 91 93 95 97 99
完成すれば,1以上,100未満の偶数値を出力する EvenPrinter
を作成してください.
<span style="color:#75715e">// 解2: 2づつ増加させる方法.
for(Integer i = 1; i < 100; i += 2){ System.out.print(i); System.out.print(" "); } System.out.println(); } }
OddPrinter
,EvenPrinter
それぞれで,20個の数値を出力するごとに改行してください.
$ java EvenPrinter
2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40
42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80
82 84 86 88 90 92 94 96 98
<span style="color:#75715e">// 解2: 改行する位置は決まっているので,3つのループで実現する.
for(Integer i = 2; i <= 40; i += 2){ System.out.printf("%2d ", i); } System.out.println(); for(Integer i = 42; i <= 80; i += 2){ System.out.printf("%2d ", i); } System.out.println(); for(Integer i = 82; i < 100; i += 2){ System.out.printf("%2d ", i); } System.out.println(); } }