이번 포스트에서는 Java를 사용하여 BMI 정보를 관리하는 간단한 프로그램을 구현해 보았습니다. 이 프로그램은 사용자로부터 이름, 성별, 키, 몸무게를 입력받아 BMI를 계산하고, 그 결과를 파일에 저장하거나 파일에서 로드하여 출력하는 기능을 제공합니다.
fileSave()) 및 파일 로드(fileLoad()) 기능을 담당하는 클래스입니다.java코드 복사
package QuizIO;
import java.io.*;
import java.util.Scanner;
public class MainEntry {
public static void main(String[] args) throws IOException {
fileSL fs = new fileSL();
Scanner sc = new Scanner(System.in);
int choice; // 메뉴 선택 변수를 밖으로 빼서 반복 사용
while (true) {
System.out.println("1. 작성하기 2. 저장내용보기 3. 프로그램 종료");
choice = sc.nextInt();
sc.nextLine(); // Consume newline left-over
switch (choice) {
case 1:
fs.fileSave();
break;
case 2:
fs.fileLoad();
break;
case 3:
System.out.println("프로그램 종료");
return; // Exit the program
default:
System.out.println("존재하지 않는 번호입니다.");
}
}
}
}
MainEntry 클래스는 사용자로부터 메뉴 선택을 받아 fileSL 객체를 통해 파일 저장 또는 파일 로드 기능을 호출합니다.fileSave() 메서드를 호출하여 BMI 정보를 입력받고 파일에 저장합니다.fileLoad() 메서드를 호출하여 저장된 BMI 정보를 파일에서 읽어와 출력합니다.java코드 복사
package QuizIO;
import java.io.*;
import java.util.*;
class fileSL {
public void fileSave() {
String name = null;
boolean gender = true; // true for male, false for female
double height = 0;
double weight = 0;
boolean con = true;
String temp = null;
double FBMI = 0;
double MBMI = 0;
String rank = null;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = null;
File f = new File("BMI.txt");
try {
bw = new BufferedWriter(new FileWriter(f, true)); // append mode
while (con) {
System.out.println("----------------회원 정보 입력 하기 ----------------------");
System.out.print("이름 >> ");
name = br.readLine();
System.out.print("성별 (m/f) >> ");
temp = br.readLine().toLowerCase();
System.out.print("키 (cm) >> ");
height = Double.parseDouble(br.readLine());
System.out.print("몸무게 (kg) >> ");
weight = Double.parseDouble(br.readLine());
if (temp.equals("m")) {
gender = true;
MBMI = weight / ((height / 100) * (height / 100));
MBMI = MBMI * 0.95;
} else if (temp.equals("f")) {
gender = false;
FBMI = weight / ((height / 100) * (height / 100));
FBMI = FBMI * 0.8;
}
double BMI = MBMI != 0 ? MBMI : FBMI;
if (BMI < 18.5) {
rank = "저체중";
} else if (BMI >= 18.5 && BMI < 23) {
rank = "정상";
} else if (BMI >= 23 && BMI < 25) {
rank = "과체중";
} else {
rank = "비만";
}
bw.write("이름: " + name + "\n");
bw.write("성별: " + (gender ? "남성" : "여성") + "\n");
bw.write("키: " + height + " cm\n");
bw.write("몸무게: " + weight + " kg\n");
bw.write("BMI: " + BMI + "\n");
bw.write("판정: " + rank + "\n");
bw.write("----------------------------\n");
System.out.print("더 입력하시겠습니까? Y or N >> ");
if (br.readLine().equalsIgnoreCase("N")) {
con = false;
}
}
System.out.println("BMI.txt 파일에 저장 완료!!");
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (bw != null)
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} // fileSave end
public void fileLoad() {
BufferedReader br = null;
File f = new File("BMI.txt");
try {
br = new BufferedReader(new FileReader(f));
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (FileNotFoundException e) {
System.err.println("파일을 찾을 수 없습니다: " + e.getMessage());
} catch (IOException e) {
System.err.println("파일 읽기 오류: " + e.getMessage());
} finally {
try {
if (br != null)
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} // fileLoad end
}
fileSL 클래스는 파일 저장(fileSave()) 및 파일 로드(fileLoad()) 기능을 구현합니다.fileSave() 메서드는 사용자로부터 이름, 성별, 키, 몸무게를 입력받아 BMI를 계산하고 파일에 저장합니다.fileLoad() 메서드는 저장된 BMI 정보를 파일에서 읽어와 콘솔에 출력합니다.