【Java ~ 今迄の復習をしながら自己紹介プログラムの作成） ~ 】勉強メモ（７）

Java学習中。
今迄の勉強した事の総復習。
ほぼ自分の勉強メモです。
過度な期待はしないでください。
<br>

過去投稿記事
-
[【Java~変数の定義、型変換について~】勉強メモ](https://qiita.com/k-yasuhiro/items/43ef789c8be7b669046a)
[【Java ~真偽値~】勉強メモ（２）](https://qiita.com/k-yasuhiro/items/5a75e6130552abd03934)
[【Java ~条件分岐・繰り返し処理~】勉強メモ（３）](https://qiita.com/k-yasuhiro/items/cc7ceb00bc795d1ea33c)
[【Java ~配列~】勉強メモ（４）](https://qiita.com/k-yasuhiro/items/97da0fe073ce5f8ce8d4)
[【Java ~メソッド~】勉強メモ（５）](https://qiita.com/k-yasuhiro/items/5b56fbae04fece175b88)
[【Java ~ クラス ~ 】勉強メモ（６）](https://qiita.com/k-yasuhiro/items/e9d320633d7584123c08)
<br>

自己紹介プログラムの作成
-


- シンプルに文字列を表示

```.java
class Main {
  public static void main(String[] args) {
    System.out.println("名前はKate Jonesです");
  }
}
```

・System.out.println(　) と書く事で(　)の中身を出力。
・文字列はダブルクォーテーション（"）で囲む。
<br>

- コンソールから入力の受け取り

```.java
import java.util.Scanner;

class Main {
  public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    
    System.out.print("名前： ");
    String firstName = scanner.next( );

    System.out.print("名字： ");
    String lastName = scanner.next( );
    
    System.out.println("名前は"+ lastName + firstName +"です");
  }
}
```
・コンソールへの入力を受け取るにはScannerという外部ライブラリをインポートする。
　また、Scannerは「import java.util.Scanner」で読み込みます。
　※記載する場所に注意。最後のセミコロンも忘れがち。
・Scannerを使用するには、先ずScannerを初期化する。
　new Scanner(System.in)で初期化します。
・初期化したものを変数に入れる。
　変数を定義は、①変数にいれる値のデータ型を指定する、②変数の名前を決める
　データの型は、Scanner
　変数名は、分かりやすい名前で付ける。今回は、scanner
・コンソールに入力された文字列を受け取る。
　scanner.next( )で、入力された文字列を受け取ります。
<br>

- 条件分岐とコンソールから数値の受け取り

```.java
import java.util.Scanner;

class Main {
  public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    
    System.out.print("名前： ");
    String firstName = scanner.next( );

    System.out.print("名字： ");
    String lastName = scanner.next( );
        
    System.out.println("年齢： ");
    int age = scanner.nextInt();
    
    System.out.println("名前は"+ lastName + firstName +"です");
    System.out.println("年齢は"+ age  +"歳です");
    if(age >= 20){
      System.out.print("成年者です");
    }else{
      System.out.print("未成年者です");
    }
  }
}

```
・コンソールに入力された数値を受け取る
　scanner.nextInt(　)で、入力された数値を受け取ります。
　その他のScannerの使い方は、文字列を受け取る方法と同様。

・条件分岐の書き方は、

```　
if(条件式){
  //処理内容①;
}else{
  //処理内容②;
}
```
条件式がtrueなら{　}内の処理内容①を行い、反対に条件式がfalseなら処理内容②を行う。
<br>

- メソッド

```.java
import java.util.Scanner;

class Main {
  public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    
    System.out.print("名前： ");
    String firstName = scanner.next( );
    
    System.out.print("名字： ");
    String lastName = scanner.next( );
    
    System.out.print("年齢： ");
    int age = scanner.nextInt();
    
    System.out.print("身長(m)： ");
    double height = scanner.nextDouble();
    
    System.out.print("体重(kg)： ");
    double weight = scanner.nextDouble();
    
    printData(firstName, lastName, age, height, weight);
    
  }
  public static void printData(String firstName, String lastName, int age, double height, double weight){
    System.out.println("名前は"+ fullName(firstName, lastName) +"です");
    System.out.println("年齢は"+ age  +"歳です");
    if(age >= 20){
      System.out.println("成年者です");
    }else{
      System.out.println("未成年者です");
    }
    System.out.println("身長は"+ height  +"mです");
    System.out.println("体重は"+ weight  +"kgです");
  }
  public static String fullName(String firstName, String lastName) {
    return firstName + " " + lastName;
  }
}

```
・コンソールに入力された小数を受け取る
　少数値の読み込み　⇨　double d = scanner.nextDouble();
　scanner.nextDouble()で、入力された小数を受け取る。
　その他のScannerの使い方は、文字列・数値を受け取る方法と同様。
　doubleは、小数を表すデータ型。

・メソッドの定義と呼び出し
　メソッドの定義は ⇨ public static void メソッド名(　){ 実行する処理 }
　メソッドを呼び出すには ⇨ メソッド名(　);

・引数を用いた、メソッドの定義と呼び出し
　メソッドの定義は ⇨ public static void メソッド名(データ型 変数名){ 実行する処理 }
　メソッドを呼び出すには ⇨ メソッド名(引数);
　また、複数の引数を受け取るためには、コンマ（,）で区切って定義する。

・戻り値のあるメソッド
　メソッドの定義は ⇨ public static 戻り値のデータ型 メソッド名(引数){ return  戻り値 }
<br>

- クラス


```.java:Main.java
import java.util.Scanner;

class Main {
  public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    
    System.out.print("名前： ");
    String firstName = scanner.next( );
    
    System.out.print("名字： ");
    String lastName = scanner.next( );
    
    System.out.print("年齢： ");
    int age = scanner.nextInt();
    
    System.out.print("身長(m)： ");
    double height = scanner.nextDouble();
    
    System.out.print("体重(kg)： ");
    double weight = scanner.nextDouble();
    // 他クラスのメソッドを呼び出す
    Person.printData(firstName, lastName, age, height, weight);
  }
}
```

```.java:Another.java
// 外部ライブラリをインポート
import java.lang.Math;

class Another{
  public static void printData(String firstName, String lastName, int age, double height, double weight){
    System.out.println("名前は"+ fullName(firstName, lastName) +"です");
    System.out.println("年齢は"+ age  +"歳です");
    if(age >= 20){
      System.out.println("成年者です");
    }else{
      System.out.println("未成年者です");
    }
    System.out.println("身長は"+ height  +"mです");
    System.out.println("体重は"+ weight  +"kgです");
    // bmiメソッドを呼び出し、変数に代入
    double bmi = bmi(height, weight);
    System.out.println("BMIは"+ Math.round(bmi) +"です");
  }
  public static String fullName(String firstName, String lastName) {
    return firstName + " " + lastName;
  }
  // bmiメソッドを定義
  public static double bmi(double height, double weight) {
    return weight/height/height;
  }
}
```
・クラス（ライブラリ）を読み込むみ
　class定義より上で「import java.lang.クラス名」と記載。

・クラスの定義
　class クラス名 {ここにメソッドを定義}
　ファイル名は、「クラス名.java」としなければならない。

・他クラスのメソッドを呼び出す
　クラス名.メソッド名()とすることで、他のクラスのメソッドを呼び出すことができる。

・四捨五入をするためのメソッド
　Math.round(数字);
<br>

- 真偽値の戻り値

```.java:Another.java
import java.lang.Math;

class Another{
  public static void printData(String firstName, String lastName, int age, double height, double weight){
    System.out.println("名前は"+ fullName(firstName, lastName) +"です");
    System.out.println("年齢は"+ age  +"歳です");
    if(age >= 20){
      System.out.println("成年者です");
    }else{
      System.out.println("未成年者です");
    }
    System.out.println("身長は"+ height  +"mです");
    System.out.println("体重は"+ weight  +"kgです");
    double bmi = bmi(height, weight);
    System.out.println("BMIは"+ Math.round(bmi) +"です");
    // 健康かどうかを判定する条件分岐を作成
    if(isHealthy(bmi)){
      System.out.println("健康です");
    }else{
      System.out.println("健康ではありません");
    }
  }
  public static String fullName(String firstName, String lastName) {
    return firstName + " " + lastName;
  }
  public static double bmi(double height, double weight) {
    return weight/height/height;
  }
  // isHealthyメソッドを定義
  public static boolean isHealthy(double bmi) {
    return bmi>=18.5 && bmi < 25;
  }
}
```
・真偽値のデータ型は、boolean型
・論理演算子
　18.5以上かつ25.0未満の「かつ」は、&&で表現し、「条件1 && 条件2」は、
　「条件1がtrueかつ条件2もtrue」であれば結果もtrueになり、どちらか一方でもfalseであれ
　ば結果はfalseになります。

　ちなみに、「または」は、| |で表現し、「条件1 | | 条件2」は、
　「条件1または条件2のどちらか一方でもtrue」であれば結果はtrueになります。