0
0

More than 3 years have passed since last update.

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

Posted at

メソッドを分割する手順

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

  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;
  }
}

これで、可読性については改善されたかと思います。

0
0
1

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
0
0