本日の残りの時間で,次に挙げる練習問題を順に作成してください.
0から1までの Double
型の乱数を発生させ,その値が0.5より小さければ Small,0.5以上であれば Big と出力するプログラムを作成してください.
0以上1未満の Double
型の乱数は,次のコードで得られます.
public class BigAndSmall{
public static void main(String[] args){
Double value = Math.random();
// valueには0から1の乱数が代入されている.
System.out.printf("value: %f: ", value);
// ここに判定のプログラムを書いていく.
}
}
実行すると,そのときの value
の値と Big もしくは Small の文字列が出力されます.
0以上1未満の Double
型の乱数は,次の1行で得られます.
Double value = Math.random();
以下の出力例と同じ結果は出ませんが,条件に示したように,value
の値が0.5より小さいか,以上かで判定できているかを確認してください.
$ java BigAndSmall
value: 0.327039: Small
$ java BigAndSmall
value: 0.582704: Big
$ java BigAndSmall
value: 0.239037: Small
$ java BigAndSmall
value: 0.304460: Small
2つの変数の四則演算+剰余を求めるプログラムを作成しましょう.
Operators
とする.main
メソッドを用意する.main
メソッド内で Integer
型の変数 value1
,value2
を宣言する.初期値は適当に与える.value1
,value2
の和算(+
)の結果を出力する.value1
,value2
の減算(-
)の結果を出力する.value1
,value2
の乗算(*
)の結果を出力する.value1
,value2
の除算(/
)の結果を出力する.value1
,value2
の剰余(%
)の結果を出力する.System.out.println
,System.out.print
,System.out.printf
のいずれかを利用すること.変数の宣言は,C言語と同じように,型 変数名;
の順に書きます. 変数への値代入もC言語と同じように=
を利用します.
また,Javaでも,変数は利用する前に宣言しなければいけません.
$ java Operators
2+4=6
2-4=-2
2*4=8
2/4=0
2%4=2
value1
,value2
に代入する値を変更すると,結果も変わることを確認しましょう.
%
という文字を System.out.printf
で表示するには %%
としましょう.与えられた年がうるう年であるか否かを判定しましょう. うるう年は,次のように判定します.
次のようなフローチャートになります.
public class LeapYear{
public static void main(String[] args){
Integer year = 2016;
Boolean leapYear = false;
// ここに判定処理を書いていく.
if(leapYear){ // leapYearがtrueの場合.
System.out.printf("%d年はうるう年です.%n", year);
}
else{
System.out.printf("%d年はうるう年ではありません.%n", year);
}
}
}
完成すれば,year
の値を変更して実行結果を確認してください.
なお,2000, 2004, 2016年はうるう年,2100,2015, 1900年はうるう年ではありません.
2つの条件の両方を満たしたときに処理を行いたい場合は,次のように,AND(&&
)で2つの条件式を結ぶ.
if(条件式1 && 条件式2){
// 条件式1, 条件式2の両方を満たした時に実行される.
}
||
)で2つの条件式を結ぶ.java
if(条件式1 || 条件式2){
// 条件式1,条件式2のどちらかを満たすときに実行される.
}
ある条件を満たさないときに処理を行いたい場合は,次のように,条件式の前に NOT(!
)をつける.
if(!条件式1){
// 条件式1を満たさないとき(falseの場合)に実行される.
}
以下のように,判定する年を変更して実行結果を確認してみましょう.
以下の例では省略していますが,year
に代入する値を変更するたびにコンパイルしてください.
$ java LeapYear
2016年はうるう年です.
$ java LeapYear
2000年はうるう年です.
$ java LeapYear
2004年はうるう年です.
$ java LeapYear
2100年はうるう年ではありません.
$ java LeapYear
2015年はうるう年ではありません.
$ java LeapYear
1900年はうるう年ではありません.
ループを用いて,1から10までの総和(10を含む)を求めましょう.次の手順で作成していきましょう.
GrandTotal
とする.main
メソッドを用意する.main
メソッド内で Integer
型の変数 result
を宣言する.
result
は初期値として0を代入しておく.main
メソッド内で Integer
型のループ制御変数 i
を宣言する.i
を用いて1から10までループを作成する.result
に i
の値を加算していく.result
の値を出力する.ループはC言語と同じように書けます. for
,while
のどちらも利用できますので,試してみましょう.
完成すれば,範囲を変更して,総和を求めましょう.
$ java GrandTotal
1から10までの総和は55です.
$ java GrandTotal
1から100までの総和は5050です.
$ java GrandTotal
1から1000までの総和は500500です.
出力例のように,九九を表示するプログラムを作成しましょう.
クラス名を Multiplication
とします.
出力するとき,System.out.printf
のフォーマット記述子に%d
ではなく,%2d
とすると,1桁の数字でも2桁として出力してくれます.
なお,%02d
とすると,足りない桁は0
で埋めてくれます.
$ java Multiplication
1 2 3 4 5 6 7 8 9
1 1 2 3 4 5 6 7 8 9
2 2 4 6 8 10 12 14 16 18
3 3 6 9 12 15 18 21 24 27
4 4 8 12 16 20 24 28 32 36
5 5 10 15 20 25 30 35 40 45
6 6 12 18 24 30 36 42 48 54
7 7 14 21 28 35 42 49 56 63
8 8 16 24 32 40 48 56 64 72
9 9 18 27 36 45 54 63 72 81
繰り返しを利用し,出力例の模様を出力してください.
クラス名は BackSlashPrinter
としてください.
$ java BackSlashPrinter
X.........
.X........
..X.......
...X......
....X.....
.....X....
......X...
.......X..
........X.
.........X
繰り返しを利用し,出力例の模様を出力してください.
クラス名は XPrinter
としてください.
$ java XPrinter
X........X
.X......X.
..X....X..
...X..X...
....XX....
....XX....
...X..X...
..X....X..
.X......X.
X........X