Java入門#2_演算子と条件分岐

#演算子
演算子とは、加減乗除をする文字のことです。
c＃やPythonでは`+,-,*,/`などがありました。

***javaもC系統とほぼ同じ記号を使います***

忘れてしまっていたら以下のページで確認して見てください。
https://java-code.jp/64

以下、上記はだいたい頭に入っているものとして進めます。

試しに、二つの数を入力してその数の和を出力するプログラムを書いて見ます。

```java
import java.io.*;

class cal{
    public static void main(String[] args)throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));//お約束

        //二つの数字を文字として入力
        System.out.println("a=?");
        String str1 = br.readLine();

        System.out.println("b=?");
        String str2 = br.readLine();

        //文字を整数型に変換
        int a = Integer.parseInt(str1);
        int b = Integer.parseInt(str2);
        //計算
        int c = a+b;

        //出力
        System.out.println("a+b = "+ c);
    }
}
```

少し長いですが、あまり難しいことはしていないです。
試しにpythonで書いてみると以下のようになります。

```python
print("a=?")
a = Int(input())

print("b=?")
b = Int(input())

c = a+b
print("a+b=" + c)
```

>ex2-1
・上のプログラムを参考にして、二つの数を入力し、整数型に変換して二つの数を足し算、引き算、掛け算、割り算をするプログラムを作って見てください。
・BMI値を計算するプログラムを書いて見ましょう。（BMI値とは、肥満指数を表すもので、体重kg÷(身長m×身長m)で導くことができます）

###キャスト演算子
型を変換する演算子です。例えば下を見てください。

```java
class cast_test{

    public static void main(String[] args){

        //int->double
        int i_number = 10;
        double exi_number = (double)i_number;//ここ
        System.out.println(exi_number);

        //double->int
        double d_number = 33.33;
        int exd_number = (int)d_number;//ここ
        System.out.println(exd_number);
       
    }
}
```

上はint型をdouble型に、下はdouble型をint型に変換しています。
`(型名)変数名`
で、型を変換することができます。これを***キャスト***と呼びます。

(ちなみに、文字型、文字列を数値に変換するにはこの方法を使うことができません。)

>ex2-2
・底辺と高さを入力し、三角形の面積を出力するプログラムを作って見ましょう。
・幅、高さ、奥行きを入力し、その三つからなる立方体の体積を出力するプログラムを作って見ましょう。
・直角三角形が存在し、直角を囲う二辺を入力したとき、対応する斜辺の長さを出力するプログラムを書いて見ましょう。（ヒント：ピタゴラスの定理または三平方の定理。`Math.sqrt(x)`でxの平方根を返します。)
全体のヒント：int型ではなくdouble型で計算しないと精度が出ません。


#条件分岐
if文を学びます。
Javaのif文の形式は、c#と同じです。ここで気をつけたいのは、***Pythonのように、インデントを下げるだけでif文だと判定してはくれないこと***です.(厳密に言えば一行だけならインデントを下げるだけでも動きますが、ややこしいので全て`{}`で囲うのが無難です)
次の文は、入力した数字が10以上であれば「10以上です」、それ以外であれば「例外です」と出力するプログラムです。実際に書いて見ましょう。

```java
import java.io.*;

class iftest{
    public static void main(String[] args)throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        System.out.println("数字を入力");
        String str = br.readLine();

        int a = Integer.parseInt(str);

        if(a >= 10){
            System.out.println("10以上です");
        }else{
            System.out.println("例外です");
        }
    }
}
```

if文に関しては慣れているC#と同じでやりやすいかと思います。
しれっと書いてしまいましたが、`else if`や`else`も同じように書きます。全く問題ないかと思います。

##論理演算子
論理演算子とは、`and`,`or`,`not`のことです。これもc＃と同じです。
それぞれ`&&`,`||`,`!`と記述します。この辺りは同じなので割愛します。忘れていたら以下のサイトで復習してください。
https://www.javadrive.jp/start/ope/index12.html

##条件演算子
あまり使うことはないですが、簡単なif文に対して、文を短く簡潔にする意図を持って`条件演算子`を使うことがあります。
次のプログラムを見てください。

```java
import java.io.*;

class chois{
    public static void main(String[] args)throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        System.out.println("数字を入力");
        String str = br.readLine();

        int a = Integer.parseInt(str);

        char answer;

        if(a == 1){
            answer = 'A';
        }
        else{
            answer = 'B';
        }

        System.out.println(answer + "コースを選択しました");
    }
}
```

このプログラムは条件演算子を使っていません。
数字の1が入力されたら、`Aコースを選択しました`。それ以外であれば`Bコースを選択しました`と出力されます。
これを条件演算子というものを使うとこうなります。

```java
import java.io.*;

class chois{
    public static void main(String[] args)throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        System.out.println("数字を入力");
        String str = br.readLine();

        int a = Integer.parseInt(str);

        char answer = (a == 1) ? 'A' : 'B';//☆

        System.out.println(answer + "コースを選択しました");
    }
}
```

☆マークがついているところが条件演算子です。
`(条件式) ? true時の処理 : false時の処理`
と記述します。(正直、「条件演算子を使え」という指示がなければif文で処理しても構わないと思います).

>ex2-3
・ある数字を入力し、その数字が偶数ならば「偶数です」、奇数ならば「奇数です」と出力するプログラムを書いて見ましょう。
・二つの数字を入力し、その二つの数字が***どちらとも***10以上であれば「abc」、それ以外なら「efg」と出力するプログラムを書いて見ましょう。
・二つの数字を入力し、その二つの数字の***どちらかが***10以上であれば「abc」、それ以外なら「efg」と出力するプログラムを書いて見ましょう。
・二つの数字を入力し、二つとも偶数であれば「二つとも」、一つだけ偶数なら「一つだけ」、どちらも偶数でなければ「偶数なし」と出力するプログラムを書いて見ましょう。