활동/호기심

While문과 for문의 차이점 (+코드를 간결하게 만들어주는 람다 표현식 설명도 한 스푼)

ByeongJun 2023. 8. 24. 16:53
반응형
 

04장 되새김 문제

죄송합니다. 되새김 문제는 위키독스 웹 사이트에서는 비공개 처리되어 있습니다. **되새김 문제에 대한 상세한 내용은 유료 E-book 또는 종이책에서 확인하실 수 있습니다.…

wikidocs.net

해당 문제는 위키독스 웹 사이트에서 공개되지 않으며 교재를 구입하거나 E-Book을 구입해야 확인 가능합니다.

서평단 및 학습 기록 목적으로 작성된 글임을 밝히며 문제시 댓글 주시면 삭제하도록 하겠습니다. 


 

요즘 나는 Do it! 점프 투 자바  교재를 보면서 차근차근 기본기를 다시 다지고 있는데

제어문 파트의 '3의 배수의 합 구하기' 문제를 풀던 중 의문이 생겼다.

 

 

 

 while문을 사용해 1부터 1000까지의 자연수 중 3의 배수의 합을 구하는 문제 

public class study {
	public static void main(String[] args) {
		int result = 0;
		int i = 1;
		while (i <= 1000) {
			if (i % 3 == 0) {
				result += i;
			}
			i += 1;
		}
		System.out.println(result);
	}
}
  1. int result = 0;
       > 합계를 저장하기 위한 변수 result를 초기화
  2. int i = 1;
       > 반복문에서 사용될 변수 i를 1로 초기화
  3. while ( i <= 1000) {
       > 문제에 나와 있는 대로 while문을 사용해 1부터 1000까지 아래의 코드를 반복 실행
  4. if ( i % 3 == 0) {
       > i를 3으로 나눴을 때 나머지가 0인 3의 배수를 확인
  5. result += i;
       > i가 3의 배수일 경우 result 변수에 i를 더하여 3의 배수들의 합을 누적
  6. i += 1;
       > i를 1씩 증가시켜 다음 수를 검사
  7. System.out.println(result);
       > 반복문이 종료된 후 3의 배수인 숫자들의 합을 출력

 

 

 

 for문을 사용한 경우 

public static void main(String[] args) {
    int result = 0;

        for (int i = 1; i <= 1000; i++) {
            if (i % 3 == 0) {
                result += i;
            }
        }

        System.out.println(result);
    }
}

조건에 따라 반복을 수행하는 while문과 다르

 

위와 같이 for문을 사용하면 (초기화; 조건식; 증감식)

한 블록에 모아 사용하기 때문에 코드가 간결해질 수 있다.

 

 

 for문과 while문 차이점 

모두 반복문의 종류로서,

특정한 작업을 반복적으로 수행할 때 사용한다는 건 알고 있지만 몇 가지 차이점이 있다. 

 

while문 for문
- 조건식만을 사용해 반복을 제어하는 구조
- 주로 반복 횟수가 정해져 있지 않거나,
  조건에 따라 반복을 수행할 때 사용
- 조건식을 체크하고 조건이 참인 동안 반복
- 초기화, 조건식, 증감식을 한 곳에 모아서 사용하는 구조
- 주로 반복 횟수가 정해져 있을 때 사용
- 반복 시작 전에 초기화를 하고, 반복이 계속될 조건 체크,
  반복이 끝날 때마다 증감식을 실행


훨씬 더 간결하다는 걸 한 눈에 볼 수 있다.

 

 

 


 람다식을 사용한 경우 

 

        // 1부터 1000까지의 정수 범위를 나타내는 스트림을 생성
        IntStream intStream = IntStream.rangeClosed(1, 1000);

        // 스트림에서 3의 배수만을 걸러내는 작업을 수행
        IntStream filteredStream = intStream.filter(i -> i % 3 == 0);

        // 걸러진 값들의 합을 계산
        int result = filteredStream.sum();

        // 결과를 출력
        System.out.println(result);

람다식과 스트림을 활용하면 for문을 사용하지 않아도 

보다 코드를 간결하게 작성할 수 있다는 것을 알게 되었다.

 

 

 

 

 

 

 

팩트) 

 

람다식에 대해서는 추후 자세히 다루겠지만

 

'->' 사이에 공백이 오는 것은

올바른 람다식의 문법이 아니라는 것까지 모르니.. 

 

아직도 갈길이 멀다고 생각드는 하루

반응형