1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

たまには前置きをせずに復習を始めてみよう。

お品書き
  • 構造化プログラミング
  • if文
  • else if文
  • switch文
  • if文とseitch文の使い分け

◆構造化プログラミング

下記の構造を組み合わせてプログラムを書くこと。
プログラムがわかりやすくなる。

①順次進行

処理を上から順々に実行していく構造

②分岐

ある条件を通って満たされるならtrue
満たされないならfalse
という処理をわける構造

③繰り返し

ある条件が満たされている間は同じ処理を繰り返す構造

◆if文

java
if( 条件式 ){
  処理1
}else{
  処理2
}

・どちらかの処理しか実行されない
・else以降は省略可
※省略した場合、条件を満たさないときは何もしない
・処理が1つのときは{ }を省略可
※省略できるがプログラムがわかりにくくなるため非推奨

◆if文Sample

java
class Aaa{
  public static void main(String[] args){
    int price = Integer.parseInt(args[0]);
    double rate = 0.10;         // 消費税率:10%;
    int discount, amount;       
    
    if( price >= 3000 ){        // 値引額の設定 3000円以上か以未満か見る
      discount = 300;           //3000円以上なら300円割引しますよ
    } else {
      discount = 0;             //3000円未満なら割引なし
    }

    amount = (int)((price - discount) * (1 + rate)); //if文で見た金額を計算して消費税率を計算。前回出てきた型変換
    System.out.println("値引金額:" + discount + "円");
    System.out.println("税込金額:" + amount + "円");
  }
}

例えば購入価格が5000円だったら。

cmd
C:\Java\1>java Aaa 5000
値引金額:300円
税込金額:5170円

値引きされないパターン
C:\Java\1>java Aaa 2999
値引金額:0円
税込金額:3298円

◆else if文

java
if( 条件式1 ){
    処理1
}else if(条件式2){
    処理2
}else{
    処理3
}

・条件は上から順に判定

◆elase if文Sample

さっきのSampleにelse if文を追加

java
class Aaa{
  public static void main(String[] args){
    int price = Integer.parseInt(args[0]);
    double rate = 0.10;         // 消費税率:10%;
    int discount, amount;
    
    if( price >= 5000 ){        // 購入金額が5000円以上か未満か
      discount = 500;           //以上なら割引
    } else if ( price >= 3000 ){ //3000円以上か未満か
    	discount = 300;          //以上なら割引
    } else {
      discount = 0;              //3000未満だったら割引なし
    }

    amount = (int)((price - discount) * (1 + rate));
    System.out.println("値引金額:" + discount + "円");
    System.out.println("税込金額:" + amount + "円");
  }
}

cmd
C:\Java\1>java Aaa 5000
値引金額:500円
税込金額:4950円

C:\Java\1>java Aaa 4999
値引金額:300円
税込金額:5168円

C:\Java\1>java Aaa 3000
値引金額:300円
税込金額:2970円

C:\Java\1>java Aaa 2999
値引金額:0円
税込金額:3298円

5000円購入すれば500円引き、3000円から4999円までなら300円引き。
3000円未満は値引きなしという結果。

条件式の結果ってboolean型ですね。

◆switch文

一度に処理を多分岐に分けられる。

java
switch(){
  case 値1 ;
    処理1
   break ;
   case 値2 ;
    処理2
   break ;
   defaut ;
    処理3
}

式はbyte型、short型、int型、char型等。
式の値によって処理の開始位置が決まる。
例えば、式の値が値1と同じならcase1から処理をスタート。値2と同じならcase2からスタート。

bresk{ 処理 }を抜ける。

◆switch文Sample

java
class Aaa{
  public static void main(String[] args){
    int num = Integer.parseInt(args[0]);
    switch( num ){
      case 1:
        System.out.println("入園料金:8,400円");
        break; //入力された値が1なら抜ける
      case 2:
        System.out.println("入園料金:7,000円");
        break; //入力された値が2なら抜ける
      case 3:
        System.out.println("入園料金:5,000円");
        break; //入力された値が3なら抜ける
      default: //それ以外
        System.out.println("1:一般,2:中・高校生,3:小学生・幼児");
    }
  }
}
cmd
class Branch3{
  public static void main(String[] args){
    int num = Integer.parseInt(args[0]);
    switch( num ){
      case 1:
        System.out.println("入園料金:8,400円");
        break;
      case 2:
        System.out.println("入園料金:7,000円");
        break;
      case 3:
        System.out.println("入園料金:5,000円");
        break;
      default:
        System.out.println("1:一般,2:中・高校生,3:小学生・幼児");
    }
  }
}

break処理をしないとどうなる?

java
class Aaa{
  public static void main(String[] args){
    int num = Integer.parseInt(args[0]);
    switch( num ){
      case 1:
        System.out.println("入園料金:8,400円");
        // break;
      case 2:
        System.out.println("入園料金:7,000円");
        // break;
      case 3:
        System.out.println("入園料金:5,000円");
        break;
      default:
        System.out.println("1:一般,2:中・高校生,3:小学生・幼児");
    }
  }
}

breakで抜けないため、入力された値の位置から順に処理をしていく。

cmd
C:\Java\1>java Aaa 1
入園料金:8,400円
入園料金:7,000円
入園料金:5,000円

C:\Java\1>java Aaa 2
入園料金:7,000円
入園料金:5,000円

◆if文とswitch文の使い分け

基本的にはif文を使うと思う。
switch文で出来る処理はif文でもできる。

がしかし、

if文はtureかfalseで見て上から処理する二分岐なので、swich文と同じ処理をしようもんなら条件の数だけelse ifを記述していくため、コードの複雑化、処理速度が遅くなったりする。

switch文Sampleのように変数の値によって処理を一度に多分岐したいときはswitch文の方がわかりやすい。

どんな処理のしたいかを考え、適切な方をえらびましょ。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?