반응형
문제
package kr.or.ddit.homework;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Scanner;
import java.util.Set;
import kr.or.ddit.LunarCalendar;
public class HomeWork17 {
public static void main(String[] args) {
Calendar cal = Calendar.getInstance();
int last = cal.getActualMaximum(Calendar.DATE);
while(true){
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
System.out.println("--------------------"+cal.get(Calendar.YEAR)+"년 "+(cal.get(Calendar.MONTH)+1)+"월------------------------");
System.out.println("<이전달\t\t\t\t\t\t다음달>");
System.out.println("일\t월\t화\t수\t목\t금\t토");
System.out.println("-----------------------------------------------------");
cal.set(Calendar.DATE, 1);
int day = cal.get(Calendar.DAY_OF_WEEK);
for (int i = 1; i <day; i++) {
System.out.print("\t");
}
for (int i = 1; i <= last; i++) {
cal.set(Calendar.DATE, i);
day = cal.get(Calendar.DAY_OF_WEEK);
if (day == Calendar.SATURDAY) {
System.out.println(i);
} else {
System.out.print(i + "\t");
}
}
System.out.println();
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
if(str.equals("<")) {
cal.add(Calendar.MONTH, -1);
last = cal.getActualMaximum(Calendar.DATE);
}else if(str.equals(">")){
cal.add(Calendar.MONTH, 1);
last = cal.getActualMaximum(Calendar.DATE);
}
}
}
}
정답
package kr.or.ddit.homework;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;
public class HomeWork17 {
Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
HomeWork17 obj = new HomeWork17();
obj.process();
}
public void process() {
/* -----2023 12월 --
* <이전달 다음달>
* 일 월 화 수 목 금 토
* 1 2
* 3 4 5 6 7 8 9
*
* -----------------------
* < 이전달 > 다음달
*
*/
Calendar cal = Calendar.getInstance();
while(true) {
// 해당 월에 마지막 일
int monthLastDay = cal.getActualMaximum(Calendar.DATE);
// 해당 주에 현재요일
// SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, and SATURDAY.
// 1 ~7
// 년도와 월
System.out.println("----------------------" + (cal.get(Calendar.YEAR)) + "년 "+ (cal.get(Calendar.MONTH)+1) + "월 ----------------------");
System.out.println("<이전달\t\t\t\t\t\t다음달>");
System.out.println("일\t월\t화\t수\t목\t금\t토");
// 1일의 요일 확인
cal.set(Calendar.DATE, 1); // 1일의 요일 확인
SimpleDateFormat sdf2 = new SimpleDateFormat("dd");
Date d2 = cal.getTime();
int day = cal.get(Calendar.DAY_OF_WEEK);
// 1일의 요일
// System.out.println(day);
int jan = 0; // 줄 넘김
int n = 1; // 요일
int day_long = day; // 첫줄 공백
for(int i=0; i<monthLastDay+day_long-1; i++) {
if(day != 1) {
System.out.print("\t");
day--;
jan++;
}
else {
System.out.print(n + " \t");
jan++;
if(jan == 7) {
System.out.println();
jan = 0;
}
n++;
}
}
// 달 이동
System.out.println();
String input = sc.nextLine();
if(input.equals("<")) {
cal.add(Calendar.MONTH, -1);
}
if(input.equals(">")) {
cal.add(Calendar.MONTH, 1);
}
}
}
}
반응형
'자바' 카테고리의 다른 글
[Java 초급] 21.5장 테스트 (0) | 2023.12.30 |
---|---|
[Java 초급] 21장 컬렉션 프레임워크 (0) | 2023.12.30 |
[Java 초급] 20장 달력 (0) | 2023.12.29 |
[Java 초급] 19장 예외 (0) | 2023.12.28 |
[Java 초급] 18.5장 테스트 (0) | 2023.12.27 |