-
※문제. 자바 기본 API활용
자바에서 지원하는 API 중 java.util.Date 클래스를 이용해서 오늘 날짜를 출력하세요
(출력형식 : 2020/8/14)더보기123456789101112131415161718192021222324public static void main(String[] args) {Date date = new Date();System.out.println(date);// Answer_01// Date 클래스만 이용해 print// getYear에서 년도는 1900을 뺀 값이 반환되므로 이를 더해줘야 함.// getMonth에서 월은 0~11이 반환되므로 1을 더해줘야 함.int year = date.getYear() + 1900;int month = date.getMonth() + 1;int day = date.getDate();System.out.println(day + "/" + month + "/" + year);// Answer_02// SimpleDateFormat을 이용하여 Date를 원하는 형태로 포맷.// format 함수를 이용하면 생성자에 입력한 패턴 대로 날짜 형태가 바뀌어 출력됨.SimpleDateFormat dateForm = new SimpleDateFormat("dd/MM/yyyy");String str = dateForm.format(date);System.out.println(str);}cs 처음에 Date 클래스에 대한 이해가 전혀 없어서 답안 도출이 힘들었다.

api를 봐도 이해가 잘 안가서 일단 무작정 객체 date를 출력해봤더니 이런 결과가 나왔다.

date 자체가 현재 일자를 업데이트 해서 출력해주는 것 같은데, 원하는 포맷으로 출력하려면 어떤 것을 사용해야 하는지 찾기가 어려웠다.
구글링을 통해 get 메소드를 이용한다는 걸 알았고, 이를 println으로 출력했다.
두번째 방법은 SimpledateFormat을 이용한 방법으로, 위와 마찬가지로 구글링을 하다 찾았다.
java.text에 있는 클래스로 내가 원하는 대로 포맷을 지정해서 정보를 변형할 수 있다.
가장 큰 실책은 실행 클래스와 기능 제공 클래스를 구분하지 않은 것.
지금은 몇 줄 안되는 코드가 괜찮지만, 나중에는 이렇게 코딩하다가는 오류 찾아내는 데에 한참 걸릴 듯...
가장 오랜 시간이 걸렸던 문제.
모르는 클래스를 이용해서 답안을 도출하려니 헤매는 시간이 많았다.
더보기123456789public void test3(){// Answer_03// Calendar 클래스를 이용해 printCalendar cal = Calendar.getInstance(); //현재 시각 정보를 가진 객체 생성System.out.println(cal.get(Calendar.YEAR));System.out.println(cal.get(Calendar.MONTH) + 1);System.out.println(cal.get(Calendar.DATE));}cs 선생님이 말씀해주신 답안 중 내가 푼 방법이 아닌 다른 방법들.
요즘은 Date 클래스에서 get메소드를 이용하려고 하면 Calendar 클래스를 사용할 것을 추천한다.
확실히 코드가 더 깔끔하다.
Date클래스의 경우 getYear()은 1900을 더해주어야 하고, getMonth도 1을 더해줘야 한다.
Calendar클래스는 달을 구할 때만 1을 더해주는 것으로 바뀌어 더 직관적이다.
123456789public void test4(){// Answer_04// java.time 패키지 LocalDate를 이용해 printLocalDate now = LocalDate.now(); //현재 날짜 정보를 가진 객체 생성System.out.println(now.getYear());System.out.println(now.getMonthValue()); // 1~12. 우리가 쓰는 숫자 바로 돌려줘 가공 필요 없음System.out.println(now.getDayOfMonth());}cs 가장 최근 클래스인 LocalDate 클래스.
달을 구할 때도 1을 더해주는 번거로움이 없다.
이렇게 한 문제를 여러 답안으로 고민하는 과정이 필요한 것 같다.
※문제. 변수 연습
정수 두 개를 입력받아, 두 수의 합, 차, 곱, 나누기한 몫과 나머지 출력=> 입력예
첫번째 정수 : 23
두번째 정수 : 7
=> 출력예
더하기 결과 : 30 --> (값1 + 값2)
빼기 결과 : 16 --> (값1 - 값2)
곱하기 결과 : 161 --> (값1 * 값2)
나누기한 몫 : 3 --> (값1 / 값2)
나누기한 나머지 : 2 --> (값1 % 값2)[연습 2]더보기123456789101112131415161718public class Example {Scanner sc = new Scanner(System.in);public void example1() {System.out.println("첫번째 정수를 입력하시오 > ");int a = sc.nextInt();System.out.println("두번째 정수를 입력하시오 > ");int b = sc.nextInt();System.out.println("더하기 결과: " + (a + b) + "--> (" + a + "+" + b + ")");System.out.println("빼기 결과: " + (a - b) + "--> (" + a + "-" + b + ")");System.out.println("곱하기 결과: " + (a * b) + "--> (" + a + "*" + b + ")");System.out.println("나누기한 몫: " + (a / b) + "--> (" + a + "/" + b + ")");System.out.println("나누기한 나머지: " + (a % b) + "--> (" + a + "%" + b + ")");}cs
포맷을 그대로 따라가기 위해 노력했는데, 오늘 배운 내용까지 생각하면 여기에 printf를 사용하면 더 깔끔할 것 같다.1234567891011121314151617181920public void example1() {System.out.println("첫번째 정수를 입력하시오 > ");int a = sc.nextInt();System.out.println("두번째 정수를 입력하시오 > ");int b = sc.nextInt();int sum = a + b;int subs = a - b;int times = a * b;int divide = a / b;int moduler = a % b;System.out.printf("더하기 결과 : %d --> (%d + %d)%n",sum, a, b);System.out.printf("빼기 결과 : %d --> (%d - %d)%n",subs, a, b);System.out.printf("곱하기 결과 : %d --> (%d * %d)%n",times, a, b);System.out.printf("나누기한 몫 : %d --> (%d / %d)%n",divide, a, b);System.out.printf("나누기한 나머지 : %d --> (%d %% %d)%n",moduler, a, b);}cs 훨씬 보기 좋다.
※문제. 형변환 실습
키보드로 문자하나를 입력받아, 그 문자의 유니코드(아스키코드)를 출력되게 함
=> 입력예 :
문자 입력 : A
=> 출력예 :
A is unicode : 65'혼자 있는 방 > Java' 카테고리의 다른 글
Homework(3) (0) 2021.06.21 Homework(2) (0) 2021.06.18 자바 라이브러리 (0) 2021.06.07 인터페이스(interface) (0) 2021.06.03 추상 클래스(abstract class) (0) 2021.06.02 댓글