# 9. Java 8일차(230824) [국비교육]

brand_mins·2023년 8월 24일

Java

목록 보기
9/47
  • 8월 24~26일 못한부분 따로 보충학습.

1. 반복문

  • 반복문은 같은 작업을 여러번 반복할때 사용함.
  • 프로그램에서 반복되는 작업을 쉽게 처리할 수 있도록 제공함.

(1) for문

  • 정해진 횟수를 반복함.
  • 1부터 100까지 합을 구하는 코드를 반복한다면 다음과 같다.
int sum = 0;
for(int i=1; i<=100; i++) {
	sum += sum + i // 100번 반복
}
System.out.println("1~100까지의 합: " + sum);
  • for문 기본문법은 다음과 같다
for(①초기화식; ②조건식; ④증감식) {
	③ 실행문 
}

<용어설명>
1) 초기화식: 반복문의 조건식에 비교값으로 사용되는 값을 초기화함.
2) 조건식: 초기식을 가지고 반복할 것인지 결정하는 식.
3) 증감식: 초기식에 선언한 값을 변경하여 반복문을 빠져나오는 용도.

  • for문이 처음 실행될때 초기화식이 제일 먼저 실행.
  • 그 다음 조건식을 평가해서 true이면 실행문 실행. false면 for문 종료
  • 조건식이 true가 되어 실행문을 모두 실행하면 증감식 실행. 그리고 다시 조건식으로 돌아감.
  • 즉, true일때 3>4>2 순서로 평가된다. false일때는 for문이 종료됨.

(2) for문 예제

  • 1부터 10까지 출력하는 코드
for(int i=1; i<=10; i++) {
	System.out.print(i + " ");
}
  • 1부터 9까지 출력하는 코드
for(int i=1; i<10; i++) {
	System.out.print(i);
}
  • 1~100까지의 합을 구하는 코드
int sum = 0;
for(int i=1; i<=100; i++) {
	sum += i;
}
System.out.println("1~" + (i-1) + " 합 : " + sum);
  • 중첩for문으로 구구단 출력하기
for(int m=2; m<=9; m++) {
	System.out.println("*** " + m + "단 ***");
    for(int n=1; n<=9; n++) {
    	System.out.println(m + " x " + n + "=" + (m*n));
  }
}
  • 배열의 요소들을 모두 출력하는 예제
int[] arr = {1,2,3,4,5};
for(int i=0; i<arr.length; i++) {
	System.out.println(arr[i]);
}
  • 1~100까지의 홀수들의 합을 구하는 예제
 int sum = 0;
 for (int i=1; i<=100; i++) {
 	if(a % 2 == 1) {
    	sum += i;
     }
 }
  • 배열의 요소들 중에 짝수만 출력하는 예제
int[] arr = {1,2,3,4,5};
for(int i=0; i<arr.length; i++) {
 if(arr[i] % 2 == 0) {
    System.out.println(arr[i]);
     }
 }
  • 1부터 100까지의 숫자 중 3의배수만 출력
for(int i=1; i<=100; i++) {
	if(i % 3 == 0) {
    	System.out.println(i);
        }
   }
  • 배열의 요소들 중에서 3의 배수만 출력하는 예제
int[] arr = {1,2,3,4,5,6,7,8,9};
for(int i=0; i<arr.length; i++) {
	if(i%3==0) {
    	System.out.println(arr[i]);
   }
}
  • 1부터 50까지의 숫자 중 5의 배수이면서 3의 배수인 숫자들의 합을 구하는 예제
int sum = 0;
for(int i=1; i<=50; i++) {
	if(i%5 == 0 && i%3 == 0) {
    	sum += i;
       }
 }
System.out.println("1~50까지 숫자 중 5의 배수이면서 3의 배수인 숫자들의 합: " + sum);
  • 배열의 요소들의 평균값을 구하는 예제
int[] arr = {1,2,3,4,5};
int sum = 0;
for(int i=0; i<arr.length; i++) {
	sum += arr[i];
}
double avg = (double) sum / arr.length;
System.out.println("배열들의 요소 평균값: " + avg);
  • 1부터 100까지 숫자 중 3과 5의 공배수인 숫자들의 합을 구하는 예제
int sum = 0;
for(int i=1; i<=100; i++) {
	if(i % 3 == 0 && i % 5 == 0) {
    	sum += i;
       }
   }
System.out.println("1~100까지 숫자 중 3과 5의 공배수인 숫자들의 합: " + sum);
  • 배열에서 최댓값과 최솟값을 구하는 예제
int[] arr = {10,5,8,2,7};
int max = arr[0];
int min = arr[0];
for(int i=1; i<arr.length; i++) {
	if(arr[i] > max) {
    	max = arr[i];
    }
    if(arr[i] < min) {
    	min = arr[i]
    }
}
System.out.println("배열에서 최댓값: " + max);
System.out.println("배열에서 최솟값: " + min);
  • for문을 이용해서 1부터 100까지의 정수 중에서 3의 배수의 총합을 출력
int sum = 0;
for(int i=1; i<=100; i++) {
	if(i%3 == 0) {
    	sum += i;
    	}
   }
   System.out.println("1~100 사이의 3의 배수 총합: " + sum);
  • 중첩 for문을 이용하여 방정식 4x+5y=60의 모든 해를 구해서 (x,y)형태로 출력
for(int x=0; x<=10; x++) {
	for(int y=0; y<=10; y++) {
		if(4*x+5*y==60) {
			System.out.println("(" + x + ", " + y + ")");
					}
				}
			}

(3) while문

  • 조건식이 true일때 계속해서 반복하고 false가 되면 반복을 멈춤.
  • while문의 기본문법은 다음과 같다.
while (① 조건식) {
	↓ 조건식이 true일경우
    ② 실행문;
}
  • 예시: while문으로 1부터 10까지 출력
int i = 1;
while (i<=10) {
	System.out.println(i + " ");
    i++;
}

(4) while문 예제

  • 1부터 100까지 합을 구하는 코드
int sum = 0;
int i = 1;
	while(i<=100) {
		sum += i;
    	i++;
	}	
    System.out.println("1~100까지의 합은 " + sum);
    }
}
  • 키보드에서 1, 2 입력하였을 때 속도를 증속, 감속 3 입력시 종료시키는 예제(중요함, 기업 코테문제)
Scanner scanner = new Scanner(System.in);
boolean run = true; // while문의 조건식을 위한 변수 선언
int speed = 0;
while(run) {
	// 메뉴 생성
	System.out.println("------------------------");
    System.out.println("1. 증속 | 2. 감속 | 3. 중지");
    System.out.println("------------------------");
    System.out.printl("선택> ");
    String strNum = scanner.nextLine(); // 키보드에서 입력한 내용을 읽음
    if(strNum.equals("1")) {
    	speed++;
        System.out.println("현재 속도: " + speed);
     } else if(strNum.equals("2")) {
     	speed--;
        System.out.println("현재 속도: " + speed);
     } else if(strNum.equals("3")) {
     	run = false;
     }
  }
  System.out.println("프로그램 종료");
  }
}
  • while문과 Math.random() 메소드 이용하여 두개의 주사위를 던졌을때 나오는 눈을 (눈1, 눈2) 형태로 출력하고 눈의 합이 5가 아니면 주사위 던짐.
while(true) {
	int num1 = (int)(Math.random()*6)+1;
    int num2 = (int)(Math.random()*6)+1;
    System.out.println("(" + num1 + ", " + num2 + ")");
    if(num1 + num2 == 5) {
    	break;
      }
    }
  • while문과 Scanner의 nextLine() 메소드를 이용해서 은행 입출력 시스템을 구현해라.

(5) do-while

  • 조건식에 의해 반복 실행한다는 점에서 while문과 동일함.
  • do-while문의 실행흐름은 다음과 같다.
do {
	① 실행문;
} while (② 조건식);
  • do-while문은 실행문이 우선 실행된다.
  • 실행문이 모두 실행되면 조건식을 평가한다.
  • 그 결과가 true이면 1>2 순으로 반복 실행하고 false면 종료.

(6) do-while 예제

  • 키보드로 입력받은 내용을 조사하여 계속 반복할 것인지 조사
System.out.println("메시지를 입력하세요.");
System.out.println("프로그램을 종료하려면 q를 입력하세요.");
Scanner scanner = new Scanner(System.in);
String input = "";
do {
	System.out.print(">");
    input = scanner.nextLine(); // 키보드로부터 읽기
    System.out.print(input);
} while( ! input.equals("q")); // 입력된 내용이 q가 아니라면 반복
System.out.println();
System.out.println("프로그램 종료");
	}
}

2. break문과 continue

(1) break

  • break문은 사용할때의 실행흐름을 제어한다.
  • break는 if문과 같이 사용함.

(2) break 예제

  • while문을 이용하여 주사위 번호 중 하나를 반복해서 뽑되 6이 나오면 종료
while(true) {
	int num = (int)(Math.random()*6)+1;
    System.out.println(num);
    if(num == 6) {
    	break;
       }
   }
   System.out.println("프로그램 종료");
   }
}
  • 만약, 반복문이 중첩될 경우 break문은 가장 가까운 반복문만 종료함.
  • 바깥쪽 반복문까지 종료시키려면 break 이름; 사용
  • 바깥쪽 for문은 'A'~'Z'까지 반복, 중첩 for문은 'a'~'z'까지 반복
    중첩for문에서 lower변수가 'g'를 가지면 for문을 빠져나오도록 함.
Outter:for(char upper='A'; upper<='Z'; upper++) {
	for(char lower='a'; lower<='z'; lower++) {
    	System.out.println(upper + "-" + lower);
        if(lower == 'g') {
        	break Outter;
            }
         }
      }
    System.out.println("프로그램 실행 종료");
    }
 }
  • break 사용하는 예제
int a = 5;
for(int i=0; i<10; i++) {
	if(i==a) {
    	break;
    }
    System.out.print(i);
}
  • while문에서 5이상의 값을 출력하고 반복문 종료
int i=0;
while(true) {
	i++;
    if(i>=5) {
    	System.out.println(i);
        break;
     }
}
  • for문에서 4이상의 값을 출력하고 반복문 종료
for(int i=0; i<10; i++) {
	if(a>=4) {
    	System.out.println(i);
        break;
   }
}

(3) continue

  • 반복문인 for, while, do-while문에서 사용.
  • continue문은 반복문을 종료하지 않고 계속 반복함.

(4) continue 예제

  • 1에서 10 사이의 수 중에서 짝수만 출력하고 홀수는 반복으로 넘어가기
for(int i=1; i<=10; i++) {
	if(i%2!=0) { // 2로 나눈 나머지가 0이 아닐 경우(홀수)
    	 continue;
       }
       System.out.print(i + " ");
       }
    }
 }
  • while문에서 짝수를 출력하는 예제
int i=0;
while(i<10) {
	i++;
    if(i%2==1);
    continue;
  	}
	System.out.println(i);
}
  • for문에서 3의 배수를 출력하지 않은 예제
for(int i=1; i<=10; i++) {
	if(i % 3 == 0) {
    	continue;
    }
    System.out.println(i);
}

(5) break, continue 같이 사용한 예제

  • for문에서 짝수 출력, 6이상의 값이 나오면 종료
for(int i=0; i<10; i++) {
	if(i%2 == 1) {
    	continue;
    }
    System.out.println(i);
    if(a>=6) {
    	break;
    }
}
  • while문에서 2의 배수를 출력하지 않고 8이상 값을 출력하고 반복문 종료.
int i=0;
while(true) {
	i++;
    if(i%2==0) {
    	continue;
    }
    if(a>=8) {
    	System.out.println(i);
        break;
    }
}
  • break~continue 20문제는 토요일에 문제 풀고 카페에 올리기.
profile
IT 개발자가 되기 위한 기록

0개의 댓글