メソッドの分割について(Java)

#メソッドを分割する手順
冗長なコードを書いてしまい可読性が悪化しました。
以下の手順でメソッドを分割したいと思います。

1. printDataメソッドとfullNameメソッドを作成
2. fullNameメソッドの中身を記述
3. printDataメソッドの中身を記述
4. printDataメソッドの呼び出すための記述

```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();
    
    String name = firstName + " " + lastName;
    
    System.out.print("年齢：");
    int age = scanner.nextInt();
    
    System.out.print("身長(m)：");
    double height = scanner.nextDouble();
    
    System.out.print("体重(kg)：");
    double weight = scanner.nextDouble();
    
    System.out.println("名前は" + name + "です");
    System.out.println("年齢は" + age + "歳です");
    if (age >= 20) {
      System.out.println("成年者です");
    } else {
      System.out.println("未成年者です");
    }
    System.out.println("身長は"+ height + "mです");
    System.out.println("体重は" + weight + "kgです");
  }
}
```

##printDataメソッドとfullNameメソッドを作成
まず、printDataメソッドとfullNameメソッドを作成します。
中身はまだ空でいいです。

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

class Main {
  public static void main(String[] args) {
       //長いので省略
  }
  public static void printData(String firstName, String lastName, int age, double height, double weight) {
  }
  public static String fullName(String firstName, String lastName) {
  }
}
```
##fullNameメソッドの中身を記述
fullNameメソッドの戻り値を記述します。
firstName と lastName を連結し、fullNameメソッドの戻り値とします。

```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();
    
    // 不要になったので削除です↓
    //String name = firstName + " " + lastName;
    
    System.out.print("年齢：");
    int age = scanner.nextInt();
    
    System.out.print("身長(m)：");
    double height = scanner.nextDouble();
    
    System.out.print("体重(kg)：");
    double weight = scanner.nextDouble();
    
    System.out.println("名前は" + name + "です");
    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 void printData(String firstName, String lastName, int age, double height, double weight) {
  }
  public static String fullName(String firstName, String lastName) {
    // firstName と lastName を連結し、fullNameメソッドの戻り値とします
    return firstName + " " + lastName;
  }
}
```
##printDataメソッドの中身を記述
fullNameメソッドを利用してフルネームを出力します。
その他、年齢などの出力をmainメソッドからコピペします。

```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();
    
    // 不要になったので削除です↓

    // System.out.println("名前は" + name + "です");
    // 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 void printData(String firstName, String lastName, int age, double height, double weight) {
    
    // fullNameメソッドを呼び出し、出力
    System.out.println("名前は" + fullName(firstName, lastName) + "です");

    // 年齢を出力(mainメソッドからコピペ)
    System.out.println("年齢は" + age + "歳です");

    // 未成年か否かの条件分岐(mainメソッドからコピペ)
    if (age >= 20) {
      System.out.println("成年者です");
    } else {
      System.out.println("未成年者です");
    }

    // 身長と体重を出力(mainメソッドからコピペ)
    System.out.println("身長は" + height + "mです");
    System.out.println("体重は" + weight + "kgです");
  }

  public static String fullName(String firstName, String lastName) {
    return firstName + " " + lastName;
  }
}
```
##printDataメソッドの呼び出すための記述
最後にprintDataメソッドの呼び出すための記述をmainメソッドに追加します。

```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();

    // printDataメソッドを呼び出します
    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;
  }
}
```
これで、可読性については改善されたかと思います。