for 문이란?
for 문은 간단하게 특정 로직을 반복시켜야 할때 사용되는 제어문이다. Java 에 제어문에서 특정 로직을 반복시키는것은 두가지가 있는데 for문과 while 문 이다. 먼저 for 문에 대해서 알아보자.
for 문을 동작하는 구성 요소
- 초기화 식 : for 문의 반복 횟수에 사용할 int 값 변수를 초기화.
- 조건식 : for 문의 로직 실행의 횟수를 컨트롤하는 조건을 의미. (횟수에 limitation 을 건다)
- 증감식 : 초기화 식의 int 변수값을 증감 시켜 로직 실행 횟수 제한
예시 :
for(초기화 식; 조건문; 증감식) {
반복하고자 하는 로직
}
코드 실습
1. 3개의 도시 입력하기
public static void main(String[] args) throws Exception {
String[] cities = new String[3];
Scanner s = new Scanner(System.in);
for(int i = 0; i < cities.length; i++) {
System.out.println((i + 1) + " 번째 도시 입력");
cities[i] = s.nextLine();
}
s.close();
System.out.println(Arrays.toString(cities));
}
Scanner 로 입력값을 받고 for 문을 돌려 배열의 길이만큼 반복적으로 표준 출력되는 질문에 답을 적어 cities 라는 String 배열에 입력값을 담았다.
상기 for 문에 초기화식으로 int i 를 0 으로 지정한다음 조건문으로 cities 의 길이보다 i 값이 낮을경우만 실행되도록 제한을 걸어 줬다. 그 다음 for 문의 context 로직이 반복할때마다 i 가 1씩 증가하도록 증감식을 마지막에 설정해 주었다.
2. 짝수 출력
public static void main(String[] args) throws Exception {
int[] num = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
int[] result = new int[(num.length / 2)];
for(int i = 1; i < num.length; i += 2) {
result[(i/2)] = num[i];
}
System.out.println(Arrays.toString(result)); // [2, 4, 6, 8, 10, 12]
}
증감식을 컨트롤하여 짝수만 출력
3. 파보나치 수열 만들기
public static void main(String[] args) throws Exception {
int num = 7;
int[] fibonacci = new int[num];
for(int i = 0; i < fibonacci.length; i++) {
if(i == 0 || i == 1) {
fibonacci[i] = 1;
continue;
}
fibonacci[i] = fibonacci[i-2] + fibonacci[i-1];
}
System.out.println("결과 > " + Arrays.toString(fibonacci));
// 결과 > [1, 1, 2, 3, 5, 8, 13]
}
파보나치의 수열은 배열 내 첫, 두 번째 인자가 1로 주어진 상태에서 그전 두 인자 2개를 점점 합하여 값일 해당 규칙을 가지고 점점 커지는 수열이다. 상기 로직에서 for 문에 조건문 if 문을 추가하여 int[] 인 fibornacci 배열의 첫번째, 두번째 element 를 1로 넣어주고 else 대신 continue 를 사용해 아래 로직들은 실행되지 않고 바로 다음 for 문 round 로 넘어가게 처리 해줘었다. 그래서 if 조건문 아래에 로직들은 첫번째, 두번째 인자에 1이라는 수를 할당 후 부터 적용이 된다.
그리하여 그 전 2 개의 인자값을 합하여 값을 할당해 파보나치의 수열이 되도록 로직 처리를 해주었다.
4. for each 문 사용 (개선된 for 문)
대략 평균을 구해보자.
public static void main(String[] args) throws Exception {
int[] numbers = {45, 34, 67, 89};
int avg = 0;
for(int num : numbers) avg += num;
System.out.println((double)avg / 4);
}
상기 로직이 향상된 for 문이다.
이해는 간단하다. numbers 라는 int 배열에서 숫자를 하나씩 받아와 int num 에 할당줘 for 문 내부로직을 처리한다는 뜻이다.
더 나아가 for 문의 로직이 상기 코드처럼 한줄로 간단히 떨어질때는 중괄호가 필요 없이 저렇게 한줄로 정리가 가능하다.
'Java 문법 > 코딩은 처음이라 with 자바 (책)' 카테고리의 다른 글
[Java] - 함수(메서드, Function) (0) | 2023.07.16 |
---|---|
[Java] - 제어문4 : 조건문 - switch 문 (0) | 2023.03.12 |
[Java] - 제어문3 : while 문 (0) | 2023.03.12 |
[Java] - 제어문2 : 조건문 - if 문 (1) | 2023.03.12 |
[Java] - 배열 (1차원 배열, 다차원 배열) (0) | 2023.03.11 |