3층 1구역 - 개발의 장/JAVA
JAVA - 배열을 이용한 요일 구하는 퀴즈(2022-07-19)
상이태상
2022. 7. 20. 00:01
결과
package arrays_0719;
import java.util.Scanner;
public class Quiz03_Repeat {
public static void main(String[] args) {
System.out.println("2022년의 어느 월 어느 일을 입력하면 요일을 표시하는 프로그램을 작성하세요.");
Scanner sc = new Scanner(System.in);
int month = 0;
int day = 0;
int dayTotal = 0;
int[] lastDay = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
String[] weekEnd = {"금", "토", "일", "월", "화", "수", "목"};
while(true) {
System.out.print("월 일을 입력해주세요.");
month = sc.nextInt(); //1~12월을 입력해주기 위함.
day = sc.nextInt(); // 1~31일을 입력해주기 위함.
if(month < 1 || month > 12) {
sc.nextLine();
continue; //1~12월 이외에 값을 입력하면 출력이 안되고 이 행동을 반복
}
if(day < 1 || day > lastDay[month - 1]) {//month - 1을 해준이유? lastDay배열에 배정되어있는 숫자는 0~11에 배정되어 있음. 근데 month는 1~12이기 떄문.
sc.nextLine();
continue; //1일~lastDay의 배열에 있는 일 이외에 값을 입력하면 출력이 안되고 이 행동을 반복.
}
for(int i = 0; i < month - 1; i++) { //i가 0부터 month - 1까지 1씩 증가할때마다
dayTotal += lastDay[i]; //lastDay[i]만큼 더해서 dayTotal에 대입
}break;
}
dayTotal = day + dayTotal; //올해의 날짜값을 알아야 하므로 작년 12개월의 말일 합(365)에 알고싶은 날짜를 더해서 dayTotal 재산출
//22년 07월 20일 수정사항 : weekend의 배열을 건드리지 않고 출력하는 방법 : dayTotal = day + dayTotal; 이 식에 +num값을 해준다.
//Ex) dayTotal = day + dayTotal + 4;
int week = dayTotal % 7; //1주는 7일 이므로 7로 나누어 나머지가 0~6이 나오게됨.
System.out.println("2022년 " + month + "월 " + day + "일은(는) " + weekEnd[week] + "요일 입니다.");
}// 이후 출력할 때, 요일이 맞지 않으면 문자열을 재조정 하거나 dayTotal = day + dayTotal; 이 식에 num값을 +-을 해주면 됨.
}