メソッドを分割する手順
冗長なコードを書いてしまい可読性が悪化しました。
以下の手順でメソッドを分割したいと思います。
- printDataメソッドとfullNameメソッドを作成
- fullNameメソッドの中身を記述
- printDataメソッドの中身を記述
- 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;
}
}
これで、可読性については改善されたかと思います。