Welcome to Wesley & Harry's Traveling & Programming

IT Program/Java Basic

자바(java) 반복문(for문) & 구구단 출력하기

Wesley & Harry 2022. 3. 1. 21:06
반응형

자바를 사용하다 보면 같은 행위를 반복해야 할 때가 있다.

우리는 이를 편리하게 하기위해 반복문이라는 것을 사용할 수 있다.

우선 우리가 반복문을 몰랐을 때를 기준으로 코드를 작성해보자.

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 에서 아까와 같은 행위를 반복하게 된다.

이 반복을 하게 되면 구구단이 출력이 가능하다.

아래는 출력 결과이다.

전부 알맞게 출력됬음을 알 수 있다.

반응형