오늘은 for문에 대하여 학습해보겠다.
for문은 반복되는 작업에서 기본적으로 사용하는 제어문이다.
for문은 3가지의 요소로 동작한다.
1. 반복횟수
2. 초기값
3. 반복 조건
위의 요소를 사용하여 문법을 작성해보면,
=> for(초기화식;조건식;증감식)
여기까지 알아보고 이제 예제로 이해해보자.
public static void main(String[] args) {
String[] cities = new String[10];
Scanner s = new Scanner(System.in);
int count = 3;
for (int idx = 0; idx < count; ++idx){
System.out.println((idx + 1) + "번째 도시를 입력하세요.");
cities[idx] = s.nextLine();
}
s.close();
System.out.println("입력한 도시의 개수는 " + count);
System.out.println("첫 번째 도시는 " + cities[0]);
System.out.println("두 번째 도시는 " + cities[1]);
System.out.println("마지막 도시는 " + cities[count-1]);
}
먼저 총 10개의 문자열을 담을 수 있는 cities 배열을 선언해준다.
그리고 세개만 담을 수 있도록 count 변수를 정의한다.
for (int idx = 0; idx < count; ++idx)
데이터에 접근하는 방법
배열내에 접근할 때 꼭 순서대로 접근할 필요는 없다. 역순으로도 가능하고, 띄엄띄엄 접근도 가능하다.
int[] numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
System.out.println("짝수만 출력");
for (int i = 0; i < numbers.length; i += 2) {
System.out.println("짝수: " + numbers[i]);
}
System.out.println("역순으로 출력");
for (int i = 0; i < numbers.length; ++i) {
int number = numbers[numbers.length - 1 - i];
System.out.println("역순: " + number);
}
짝수만 띄엄띄엄 출력하는 방법과 역순으로 출력하는 방법이다.
for문 내의 조건을 통하여 데이터에 다양한 접근이 가능하다.
1. 짝수
초기화한 변수인 i에 계속 2씩 더해가면서 배열의 해당 위치에 있는 값을 가져온다.
2. 역순
배열의 길이값을 가져와서 1을 먼저 빼준다. 이유는 인덱스는 0부터 시작하기 때문이다.
그리고 i를 1씩 증가시켜가며 빼주면 역순으로 출력이 가능하다.
피보나치 수열
피보나치 수열은 자주 보이는 문제임으로 익혀두는 것이 좋다.
※피보나치 수열이란?
첫째 및 둘째 항이 1이며 그 뒤의 모든 항은 바로 앞 두 항의 합인 수열이다. 처음 여섯 항은 각각 1, 1, 2, 3, 5, 8이다. 편의상 0번째 항을 0으로 두기도 한다.
System.out.println("피보나치 수열 만들기");
Scanner s = new Scanner(System.in);
System.out.println("수열 개수를 입력하세요. ");
int num = s.nextInt();
s.close();
int a = 1;
int b = 1;
int[] fibonacci = new int[num];
fibonacci[0] = a;
fibonacci[1] = b;
for (int i=0; i < (num-2); ++i ) {
fibonacci[i+2] = a+b;
a = b;
b = fibonacci[i+2];
}
System.out.println("결과: ");
for (int i = 0; i < num; ++i) {
System.out.println(fibonacci[i]);
}
첫 번째, 두 번째 수를 1로 고정하고 변수를 선언해줬다.
입력받은 수 만큼만 배열에 저장을 할건데, 세 번째 수 부터는 첫 번째와 두 번째를 더해서 담는 것이기 때문에
이때부터 for문을 사용해서 반복하며 더해서 담는다.
for문에서 i < num - 2 로 적는 이유는 이미 배열 1,2번째에는 1로 차있기 때문이다.
for each문
for문에서 결과를 표시할 때 좀 더 간결하게 표현할 수 있다.
System.out.println("피보나치 수열 만들기");
System.out.println("수열 개수를 입력하세요. ");
int num = s.nextInt();
s.close();
int a = 1;
int b = 1;
int[] fibonacci = new int[num];
fibonacci[0] = a;
fibonacci[1] = b;
for (int i=0; i < (num-2); ++i ) {
fibonacci[i+2] = a+b;
a = b;
b = fibonacci[i+2];
}
for (int j : fibonacci) {
System.out.println(j);
}
이전 예제보다 출력부분이 확연하게 짧아진 것을 확인할 수 있다.
이처럼 배열을 순서대로 출력할 때는 for each 문을 사용하여 간단하게 출력 가능하다.
'java 공부 > 코딩은 처음이라 with 자바' 카테고리의 다른 글
#자바_7.while문_제어문 (0) | 2024.03.09 |
---|---|
#자바_6.if문_제어문 (0) | 2024.03.08 |
#자바_4. 배열_자바 언어 기본 (0) | 2024.03.08 |
#자바_3. 데이터 입출력_자바 언어 기본 (0) | 2024.03.06 |
#자바_2. 연산자_자바 언어 기본 (1) | 2024.03.06 |