학생의 (이름 / 생년월일(yyyy.MM.dd) / 국어 / 수학 / 영어) 를 괄호안의 형식으로 입력받아서
학생의 이름, 생년월일(요일), 나이, 총점, 평균 값을 출력하는
프로그램을 만들어 보겠습니다.
먼저 전체 코드를 보여드리겠습니다.
package com.puft.dec171.main;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class ExampleMain1 {
public static void main(String[] args) throws ParseException {
Scanner sc = new Scanner(System.in);
System.out.println("이름 / 생년월일(yyyy.MM.dd)/국어/수학/영어");
String answer = sc.next();
String [] s = answer.split("/");
System.out.println("이름 : " + s[0]);
String birthday = s[1];
SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy.MM.dd");
Date d = new Date();
Date d4 = sdf3.parse(birthday);
int now = d.getYear();
int year = d4.getYear();
int Korean = Integer.parseInt(s[2]);
int Math = Integer.parseInt(s[3]);
int English = Integer.parseInt(s[4]);
String [] day = {"일", "월", "화", "수", "목", "금", "토"};
System.out.printf("생년월일 : %d %d %d " + day[d.getDay()]+ "요일\n",d4.getYear()+1900, d4.getMonth()+1, d4.getDate());
System.out.printf("나이 : %d\n" , (now - year));
System.out.printf("총점 : %d\n" , (Korean + English + Math));
System.out.printf("평균 : %.1f\n",(double)(Korean + English + Math)/3);
}
}
그럼 요구조건 하나씩 코드를 살펴보겠습니다.
Scanner sc = new Scanner(System.in);
System.out.println("이름 / 생년월일(yyyy.MM.dd)/국어/수학/영어");
String answer = sc.next();
먼저 정보를 입력받고
answer 변수에 넣습니다.
String [] s = answer.split("/");
다음 "/" 슬래시를 기준으로 나눠서 배열에 넣습니다.
String birthday = s[1];
배열의 첫번째 값은 이름이 되겠네요.
String birthday = s[1];
SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy.MM.dd");
Date d = new Date();
Date d4 = sdf3.parse(birthday);
그 다음 생년월일을 입력받고 나이를 추출하기 위해선
현재의 날짜도 알아야하니 현재 날짜 객체를 만들어주고
입력받은 생년월일을 날짜 데이터로 Formatting시킵니다.
int now = d.getYear();
int year = d4.getYear();
System.out.printf("나이 : %d\n" , (now - year));
나이를 출력하기 위해서 현재 날짜와
생일의 년도를 빼서 출력합니다.
String [] day = {"일", "월", "화", "수", "목", "금", "토"};
System.out.printf("생년월일 : %d %d %d " + day[d.getDay()]+ "요일\n",d4.getYear()+1900, d4.getMonth()+1, d4.getDate());
getDay는 요일에 해당하는 숫자가 나오기 때문에 변환해서 요일을 출력합니다.
getYear은 1900을 더해줘야 해당 연도가 나오고
getMonth역시 1을 더해줘야 해당 달이 나옵니다.
다음은 입력받은 성적을 변수에 집어 넣습니다.
int Korean = Integer.parseInt(s[2]);
int Math = Integer.parseInt(s[3]);
int English = Integer.parseInt(s[4]);
총점과 평균은 많이 실습했어서 쉽게 구할 수 있었습니다.
System.out.printf("총점 : %d\n" , (Korean + English + Math));
System.out.printf("평균 : %.1f\n",(double)(Korean + English + Math)/3);
String d5 = sdf3.format(d4);
추가적으로 다음과 같이 코드를 작성하면
날짜 객체를 String 형태로 바꿀 수 있습니다.
split을 사용해서 문자열을 특정 문자를 기준으로 배열을 나누고
입력 받은 데이터를 날짜 데이터로 변경하는 기능을 사용해서 실습을 해봤습니다.
SimpleDataFormat이나 parse와 같이 날짜 데이터를 다루는 부분이 어려웠던 것 같습니다.
'Java > 실습' 카테고리의 다른 글
[Java] 기상청 (HTTP 실습) (0) | 2024.12.18 |
---|---|
[Java] HTTP통신 (2) | 2024.12.18 |
[Java] 행성 (0) | 2024.12.16 |
[Java] 배열의 유사도 (0) | 2024.12.10 |
[Java] 가위바위보 대회 (0) | 2024.12.10 |