자바를 사용하다 보면 같은 행위를 반복해야 할 때가 있다.
우리는 이를 편리하게 하기위해 반복문이라는 것을 사용할 수 있다.
우선 우리가 반복문을 몰랐을 때를 기준으로 코드를 작성해보자.
1~5까지 덧셈을 해보자.
int wesley = 0;
wesley = wesley + 1;
wesley = wesley + 2;
wesley = wesley + 3;
wesley = wesley + 4;
wesley = wesley + 5;
System.out.println(wesley);
1부터 5를 더하는 행위는 어느정도 가볍게 할 수 있다.
이 형태의 덧셈을 조금만 더 간략하게 쓰는 방법또한 존재한다.
줄여보도록 하자
int wesley = 0;
wesley += 1;
wesley += 2;
wesley += 3;
wesley += 4;
wesley += 5;
System.out.println(wesley);
우리는 wesley = wesley + 1;의 형태를
wesley += 1; 로 줄일수가 있다.
같은 뜻으로 사용이 가능하다.
반복문은 왜 필요한것일까?
코드량을 줄이고 시간을 줄이고 오류를 줄이기 위해서 사용된다고 난 생각한다.
우선 이 코드는 재쳐두고 반복문의 형태부터 살펴보도록 하자.
for(초기화식; 조건식; 증감식) {
}
for문의 기본 형식이다.
이번에도 네모칸을 치면서 설명을 해보도록 하겠다.
까만 네모칸이 for문이 시작하는 부분이다.
까만 네모칸으로 들어와 빨간 초기화식으로 진행이 된다.
for(int i = 1; i <= 5; i++) { } |
이때는 int i = 1; 이런식으로 타입또한 지정이 가능하다.
초기화식이 int i = 1; 이고
조건식이 i <= 5; 이고
증감식이 i++ 이라면
빨간네모 int i가 1일때 i의 값이 5 아래라면 노란네모의 실행문을 실행시킨 후
증감식 i++에 따라 i의 값이 1 상승하게 된다.
값이 상승했으니 i의 값은 2이다.
i = 2 이니 조건식에 다시 대입을 해본다.
i < = 5의 조건을 가지고있으니 다시한번 노란네모의 실행문을 실행 시킨 후
파란네모 증감식으로 들어가게 된다.
이과정이 i가 5가 될때까지 반복이다. 그 말인 즉슨 노란색 네모가 i의 값이 1,2,3,4,5로 올라갈 때 까지 반복된다는 이야기이다.
반복이 끝난 후 for문의 바깥쪽(회색네모) 부분으로 자바의 흐름이 흘러가데 된다.
그럼 이제 앞서 이야기했던 1부터 5까지 덧셈을 해보도록 하자
for문의 형식에 맞춰 간단하게 작성이 가능하다.
int sum = 0;
for(int i = 1; i <= 5; i++) {
sum += i;
}
System.out.println("1~5까지의 합 = " + sum);
코드를 설명해 보겠다. 위에서 설명했지만 sum += i의 의미를 모를 수 있다.
우선 위에서 간략하게 쓰는 방법에 대해 설명을 했다.
wesley = wesley + 1; 과
wesley += 1; 의 의미는 같다고 했다.
그렇다면 우리는 sum += i의 의미는
sum = sum + i; 라고 볼수 있겠다.
for문을 설명한것과 같이 처음 i의 값은 1이다
그리고 for문 바깥에서 sum = 0;으로 초기화가 된상태이다.
첫번째 반복문이 돌때
sum = 0 + 1;
의 의미가 담겨져있다.
앞에 있는 sum 은 뒤에 0 + 1이 연산 후 저장될 공간이다.
코드가 실행된 후
i++이라는 증감식에 의해 i의 값이 2가 된다.
i의 값이 2가 된 뒤 i <= 5 조건식에 대입해보면 true 이므로
sum += i;
가 한번 더 동작한다.
아까 sum은 1로 저장되었고 i의 값은 2가 된상태이므로
sum = 1 + 2
가 동작하게 되는것이다.
이와같이 5까지
sum = 3 + 3
sum = 6 + 4
sum = 10 + 5
까지 반복을 하게되어 최종 sum = 10이라는 결과값이 나타나는 것을 볼 수 있다.
코드를 실행하여 확인해보자.
알맞게 나온 것을 확인할 수 있다.
우리는 이 기본 형식을 통해 100까지 손쉽게 더하는 법또한 가능하다.
그저 숫자만 바꿔주면 된다.
우리는 이미 답을 알고있다. 1부터 100을 더하면 5050이 나온다는 사실을 말이다.
모른다면 알아두자 나도 어디서 알았는지는 잘 모르겠다.
int sum = 0;
for(int i = 1; i <= 100; i++) {
sum += i;
}
System.out.println("1~100까지의 합 = " + sum);
100번 쓸 코드를 단 몇줄로 끝내버렸다. 우리는 이러한 편리함 때문에 반복문을 사용한다.
우리는 이를 통해 다양한 작업이 가능하다.
for문도 중첩해서 사용이 가능하다는 사실.
우리는 그 가장 대표적인 예시로 구구단을 써보겠다.
어떤식으로 해야할까. 약간의 생각이 필요하다.
if문을 중첩해서 썻듯이
for문안에 for문이 들어간다는 생각을 잊지말자.
for(int i = 2; i <= 9; i++) {
System.out.println(i + "단 구구단");
for (int j = 1; j <= 9; j++) {
System.out.println(i + " x " + j + " = " + (i*j));
}
}
정답은 위와 같다.
설명을 하자면 우선 첫번째 i = 2의 for문에 들어간다 그다음
2단 구구단을 출력 한후 j=1의 for문에 들어간다.
그렇다면 현재 i = 2, j = 1의 값을 가지고있다.
System.out.println(i + " x " + j + " = " + (i*j)); 를 통해 i x j = i*j의 값이 출력이 된다.
그다음 첫번째 for문으로 들어가는 것이 아닌
j++ 증감식으로 이동해 j의 값이 늘어난다
그렇게 되면 i = 2 , j = 2의 값이된다.
다시한번 System.out.println(i + " x " + j + " = " + (i*j)); 를 출력한다.
그다음 j++ 증감식으로 이동해 j의 값이 늘어난다.
이런식으로 반복하면서 j의 값이 9가 될때까지
System.out.println(i + " x " + j + " = " + (i*j));이 반복된다.
j가 10으로 증가할 차례가 되었을 때 j <= 9 의 조건에 못미침으로 해당 for문을 빠져나온다.
for문을 빠져나오면 i=2 였던 for문의 실행부분이 마쳐지게된다.
i++의 증감식으로 i = 3의 값으로 올라간다.
3단 구구단 을 출력한 후 다시 i=3 j=1 에서 아까와 같은 행위를 반복하게 된다.
이 반복을 하게 되면 구구단이 출력이 가능하다.
아래는 출력 결과이다.
전부 알맞게 출력됬음을 알 수 있다.
'IT Program > Java Basic' 카테고리의 다른 글
자바(java) 반복문 (do-while) & Scanner 예제 & 자바 문자열 받아오기 & 문자열 비교 (0) | 2022.03.01 |
---|---|
자바(java) 반복문(while) & 자바 키코드(keyCode) 정리 & 키보드 제어 & while문 키보드 (0) | 2022.03.01 |
자바(java) 조건문 switch문 (2) | 2022.03.01 |
자바(java) 조건문(if) & if-else & 중첩 if문 & Math.random()함수 (0) | 2022.03.01 |
java 논리 부정 연산자(!) & 논리 연산자 종류{AND(&&),OR(|),XOR(^),NOT(!)} & 원하는 문자 한번에 바꾸는 법(Replace/Find) (0) | 2022.03.01 |