
分岐「if文」
せかチャン - 世界一わかりやすい情報科チャンネルさんの
動画を見て今日も勉強をしていました。
今回は、分岐について学びました。
分岐
プログラミングの基本構造として学びましたが
分岐のイメージは、ある条件があって
条件を満たす場合は【処理1】
満たさない場合は【処理2】をする、みたいな感じです。
Javaの分岐は「if文」と「switch文」
この2つがJavaの分岐で用意されているものらしい。
今回はif文を確認していきます。
switch文についてはコチラ
if文
ifってExcel使ってた時よく使っていた記憶があります。。。
書き方を確認していきます。
if (条件式){
【処理1】
}else {
【処理2】
}
こんなイメージらしいです。
条件式を満たす場合は【処理1】
満たされない場合は【処理2】を実行します。
※この条件式に入るのは
boolean型が該当します
if文の特徴としては
・どちらかの【処理】しかされない事
・else以降は省略可能(条件が満たされない場合、処理されない)
割引チェッカーのソースコード
とりあえず書きます。
3,836円の買い物をしたと仮定してみます。
① class DiscountChecker {
② public static void main(String[] args){
③ int price = Integer.parseInt(args[0]);
④ double rate = 0.10;
⑤ int discount, amount;
⑥ if(price >= 3000 ) {
⑦ discount = 300;
⑧ } else {
⑨ discount = 0;
⑩ }
⑪ amount = (int)((price - discount)*(1 + rate));
⑫ System.out.println("値引金額:"+ discount + "円");
⑬ System.out.println("税込金額:" + amount + "円");
⑭ }
⑮ }
① class DiscountChecker {
いつものクラス宣言と定義
DiscountCheckerで割引確認的な。
②public static void main(String[] args){
いつものやつ
③int price = Integer.parseInt(args[0]);
文字列を四則演算できるint型に変換するソースコード。
コンパイル後、実行するときに文字列を入力する
※ここでは例えば「3836」と入力する予定
文字列としてプログラムが受け取った後
"3836"としてargs配列に入る。
要は、コマンドラインで入力された数値に対して
文字列型からint型に変換して、変数priceに代入している。
さらに砕いて、コンパイル後、実行するときに
打つ数字(今回は3836)が priceの値になるイメージ。
④double rate = 0.10;
消費税を10%として設定するので、0.10になります。
doubleでないと、小数点以下はダメなので
intは使われません。
⑤int discount, amount;
int型の変数をここで2つ宣言
,(カンマ)で2つ宣言できます!
⑥if(price >= 3000 ) {
if文を使って値引き額を設定していく。
priceという(データ入力した数値:3836)が
3000以上なのか、という条件。
{ コレ入るの注意。忘れそう。。
⑦discount = 300;
⑥の流れから、今回は3000以上なので
この文章から【discount=300】という値が設定されます。
⑧ } else {
もし3000以下の数値が入力された場合
このelse以下の処理がされます。
最初の }は⑥の{ を閉じてます。
else以降の文章、{ が必要なので注意。
⑨discount = 0;
もし3000未満の数字が入力された場合
【discount=0】という値が設定されます。
⑩ }
⑧の、else{ を閉じてます
⑪amount = (int)((price - discount)*(1 + rate));
まず(int)について
これは、((price - discount)*(1 + rate))
で求めた計算結果をint型にキャストして
amountに代入するものになります。
小数点以下を切り捨てるために、(int)でキャストしています。
priceの値は、入力した数値の、3836になります。
discountの値は、3000以上だったので、300になります。
(1 + rate)は消費税を乗せる計算式です。
rateは0.10と設定しているので(1.10)になります。
ということで、計算してみます。
( (3836 - 300) * ( 1.10 ) ) = 3889.6
そして、(int)型にキャストしているので小数点以下は切り捨てられます。
つまり、amount = 3889 になります
⑫System.out.println("値引金額:"+ discount + "円");
ここは、値引金額:300円と出力結果されます。
⑦で設定されています。
⑬System.out.println("税込金額:" + amount + "円");
ここは、税込金額:3889円と出力結果されます。
⑪で設定されています。
⑭ }
②public static void main(String[] args) {
これを閉じています。
⑮ }
① class DiscountChecker {
これを閉じています。
else - if 文
上記のソースコードでは、2択でしたが
この条件はさらに増やせるとの事。
if (条件式1){
【処理1】
}else if (条件式2){
【処理2】
} else{
【処理3】
}
こんなイメージです。
【条件式1】が満たされたら【処理1】
満たさないなら【条件式2】を満たすか判定
【条件式2】が満たされたら【処理2】
満たされないなら【処理3】がされる。
※条件式は上から順に判定されていきます。
ソースコードを追加して確認
5000円以上だったら割引額500円という設定にします。
if(price >= 5000 ) {
discount = 500;
} else if (price >= 3000) {
discount = 300;
} else {
discount = 0;
}
こんな感じで、条件式2を追加できます。