본문 바로가기

Java/실습

[Java] Split과 Date 실습

학생의 (이름 / 생년월일(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