1. 달력 만들기
1.) 입력 및 선언
- 년과 월을 입력받아서 달력 출력할 예정.
- 따라서 연도와 월을 입력 받고 필요한 변수들 미리 선언해줌.
Scanner scan = new Scanner(System.in);
int year = 0, month = 0;
int totalDay = 0;
int dayOfMonth = 0;
int startDay = 0;
System.out.println("연도와 월을 입력하세요.");
System.out.print("연도 : ");
year = scan.nextInt();
System.out.print("월 : ");
month = scan.nextInt();
2.) 입력한 연도까지의 총일수 구하기 (if문으로 윤년 조건까지 만족시켜서 구하기)
for(int i = 1; i < year; i++) {
totalDay += 365;
if(((i % 4) == 0) && ((i % 100) != 0) || ((i % 400) == 0)) {
totalDay++;
}
}
3.) 입력한 달 이전까지의 총일수 구하기 (if문으로 윤달 조건까지 만족시켜서 구하기)
for(int j = 1; j < month; j++) {
if(j == 4 || j == 6 || j == 9 || j == 11) {
totalDay += 30;
}
else if(j == 2) {
if(((year % 4) == 0) && ((year % 100) != 0) || ((year % 400) == 0)) {
totalDay += 29;
}
else {
totalDay += 28;
}
}
else {
totalDay += 31;
}
}
startDay = totalDay % 7;
4.) 입력한(출력할) 달의 한달 일수 정하기
if(month == 4 || month == 6 || month == 9 || month == 11) {
dayOfMonth = 30;
}
else if(month == 2) {
if(((year % 4) == 0) && ((year % 100) != 0)
|| ((year % 400) == 0)) {
dayOfMonth = 29;
}
else {
dayOfMonth = 28;
}
}
else {
dayOfMonth = 31;
}
5.) 달력 양식 출력
System.out.println();
System.out.println(year + "년\t\t\t\t\t\t" + month + "월");
System.out.println("===================================================");
System.out.println("일\t월\t화\t수\t목\t금\t토");
System.out.println("===================================================");
6.) 첫날 시작 요일을 정하기 위해서 startDay와 비교
- startDay == 6 일 때, break문으로 탭(\t) 출력 멈추고 다음 명령문으로 넘어감
- 날짜간 간격 유지를 위해 \t 출력
int cnt = 0;
for(int k = 0; k <= startDay; k++) {
if(startDay == 6)
break;
System.out.print("\t");
cnt++;
}
7.) 1일부터 차례대로 날짜 출력해줌
- cnt로 7일까지 비교해서 줄바꿈
- 이외에 일수 출력 될때는 탭
for(int l = 1; l <= dayOfMonth; l++) {
System.out.printf("%2d", l);
cnt++;
if(cnt % 7 ==
0) {
System.out.println();
}
else {
System.out.print("\t");
}
2. UP AND DOWN
public static void main(String[] args) {
//입력 인스턴스 생성
Scanner scan = new Scanner(System.in);
//난수 인스턴스 생성
Random rand = new Random();
//성공/실패 저장 변수
boolean success = false;
//맞출 번호 생성(1~100 사이의 값 생성)
int num = rand.nextInt(100) + 1; //int num = rand.nextInt(100); 이렇게 100으로 설정할 경우 0~99 사이의 수만 생성됨. 따라서 뒤에 +1을 해주어야 1~100으로 됨.
// int num = (rand.nextInt(100) + 1) * 10; //10~1000 사이의 십단위 숫자만 출력
//사용자 입력값 저장 변수
int inNum = 0;
//사용자 입력 값과 생성값 비교 후 판단 출력
for(int i = 1; i <= 10; i++) {
//입력 안내
System.out.println("입력 > ");
inNum = scan.nextInt();
//비교 판정
if(num == inNum) {
//결과 출력
System.out.println("시도 횟수 " + i + "번 성공!");
//반복 종료 처리
i = 10; //break;로 대체 가능
//성공/실패 여부 저장
success = true;
}
else if(num > inNum) {
System.out.println("UP!");
}
else if(num < inNum) {
System.out.println("DOWN!");
}
}
if(success == false) {
//10번 시도 실패 후 게임 종료
//정답 알려주기
System.out.println("실패! 정답 " + num);
}
}//메인 끝
3. 디버깅
컴퓨터 프로그램에 이상을 주는 현상을 제거하는 행동
프로그램이 잘 돌고 있는지 또는 연산이 잘 이루어지고 있는지 확인하기 위함
4. 프로그램의 구성요소
1. 입력 : 사용자로부터 값을 입력받는다.
2. 연산 : 값을 처리한다.
3. 출력 : 값을 출력한다.
5. 프로그램 코딩의 구조
- 일괄처리 (순서대로 처리)
- 반복처리 (특정 조건에 따라 반복한다.)
-> 모든 프로그램은 사용자의 종료 명령이 없다면 정해진 순서의 명령문장을 순서대로 반복한다.
6. break point
컴파일 하다가 "break point"를 만나면 멈춤
F11 누르면 디버깅 하면서 변수변화 상태 확인할 수 있음
break point를 찍고 디버깅한 후 break point이후에 라인부터 F6찍으면서 다음줄부터 순서대로 확인해보기.
7. 알고리즘
'JAVA' 카테고리의 다른 글
JAVA(10) - 배열(Array)/선언 방식/공간 사용(대입)/성적 입력 프로그램/향상된 for문 (0) | 2020.03.09 |
---|---|
JAVA(9) - 무한 반복문/반복문 - while문/에러 뜨는 이유 (0) | 2020.03.09 |
JAVA(7) - 반복문/for문/구구단 출력 프로그램/1~100까지의 합 구하기/for문 중첩/제어문 조합 (2) | 2020.03.05 |
JAVA(6) - switch문 계산기 만들기/if문으로 계산기 만들기/switch -> if 변환 (1) | 2020.03.05 |
JAVA(5) - 조건문/if/else if/학점변환프로그램/if문 중첩/switch (3) | 2020.03.04 |