본문 바로가기
Programing Language/Java

[Java] 5.반복문(if,for문)

by tangle96 2021. 5. 1.

진도를 나가며 반복문 예제를.. 주로 내주셨고 수업중에 결과가 대부분 나왔지만

 

안나온건 복습과정에서 습득했습니다.

 

강사님께서 말씀해주신 변수추종능력, 결국 이 변수추종능력은 i와 j값을 뭐 노트에 적고 추적하든

 

머리속으로 추적하든 첫번째 for문으로 들어간 i부터 마지막 값의 j리턴 값 까지,

 

이중FOR문의 구성과 if문의 조건(이중 for문에서 원하는 값까지 출력하려면)

 

이것을 구상하고 코드에 적용할 능력이 필요한 것 같습니다.

 

저도 완벽하지는 않습니다. 제가 이해한 바는

 

일단 출력해야할 결과물이 세로와 가로의 구성, 즉 구구단도 결국 위아래로 쭉 출력해야한다는 것입니다. 

 

ex) 1x2=2 ....etc 직사각형의 결과물 예상

 

ex) 대충이해하면 세로든 가로든 i와j값이 , --> 2개의 변수가 어떻게든 반복되든 돌든 출력되겠구나를 이해해야한다. 숫자가 뭔가 이어 붙여지고있다. 무언가는 특정 조건에만 나온다. 이 구조를 알아야 할 것 같습니다.

1

12

123

1234

12345

 

 

 

트리찍기 등 세로와 가로의 일정한 구성은 이중 for문은 기본이며(i가 한번 돌때 j값도 반복문 내에서 돌아야함으로)

 

거기서 if문의 조건을 어떻게 주어야 알아야 하는게 핵심이라고 생각합니다.

 

여기서부터는 그냥 내가 공부한걸 써야할지.. 그래도 블로그인데 상호교류가 되게 글을 써야할지 고민이 되는 시점입니다.

 

아무튼 선 예제, 후 코드로 글을 작성해보겠습니다.

 

Q1. 1부터 100까지의 숫자중 홀수의 값의 합계를 출력해라.

1
2
3
4
5
6
7
int sum =0
    for(int i=1; i<101; i++) { //초기화 ; 조건식 ; 증감식
            if(i%2!=0) { //i의 값이 1씩 계속 증가한 값 중에 만약 i의 값이 홀수이면 sum에 더해져라
                sum += i;
        }
    }
        System.out.println(sum);
cs

 

Q2. 1부터 100까지의 숫자중 3의 배수의 합계를 출력해라.

1
2
3
4
5
6
7
    int sum =0
        for(int i=1; i<101; i++) { //초기화 ; 조건식 ; 증감식
            if(i%3==0) { //i의 값이 증가한 값의 3의 배수만 더해라 조건 추가
                sum += i;
            }
        }
        System.out.println(sum);
cs

 

Q3. 1부터 100까지 숫자에서 50~59 까지의 숫자는 뺴고 덧셈한 합계와 반복된 횟수를 출력해라

1
2
3
4
5
6
7
8
9
10
    int sum =0;
        int loop_cnt=0;
        for(int i=1; i<101; i++) { //초기화 ; 조건식 ; 증감식
            if(!(i>=50 && i<=59)) {//50보다 크거나 같고 59보다 작거나 같은 값 빼고 더해라
                sum += i;
                loop_cnt = i;
            }
            System.out.println("1부터 100까지 숫자에서 50~59까지의 숫자는 빼고 덧셈한 합계:" + sum);
        System.out.println(loop_cnt +"번 반복되었습니다.");
        
cs

 

Q4. 1~60 까지 더하되 40번대 숫자를 제외하고 더한숫자

1
2
3
4
5
6
7
8
9
int sum2 =0;
        for(int i=1; i<61; i++) { //초기화 ; 조건식 ; 증감식
            if!(i>=40 && i<=49) ) {//40번대  숫자 제외    i<40 || i>49
                sum2 += i;
                
            }
            
        }
        System.out.println("1~60까지 더하되 40번대 숫자를 제외하고 더한 숫자: "+ sum2);
cs

 

Q5. 1~5까지 더한결과 단, 5->1순으로 더하기

1
2
3
4
5
int sum3 =0;
        for(int i=5; i>=1 ; i--) { //i가 5 i의 값이 1보다 크거나 같으면 
            sum3 += i;
        }
        System.out.println("1~5까지 거꾸로 더한 값 : " + sum3);
cs

Q6. 숫자합이 50넘어가기 전의 숫자합을 출력하기

1
2
3
4
5
6
7
8
9
10
int sum4 =0;
        for(int i=1; i<101; i++) {
            sum4 += i;
            if(sum4>50) {
                sum4 = sum4 - i;
                break;
            }
        }
        
        System.out.println("숫자합이 50이 넘어가기 바로 전의 숫자합을 출력한 값 : " + sum4);
cs

 

Q7. 1~100까지 더한 누적 합이 50 미만 일때 까지만 더하고 출력하기

1
2
3
4
5
6
7
8
9
10
11
12
int sum5 =0;
        
        for(int i=1; i<101; i++) {
            sum5 += i;  
            if(i>=50) {
                break;
            }
        }
        
        
        System.out.println("1~100까지 더한 누적 합이 50미만일때 까지 더하고 출력한 값 :" + sum5);
        
cs

 

구구단은 구글링하면 코드 쉽게 나오니 다들 한번쯤 해봤으면 좋겠습니다

 

그래도 이중FOR문의 기본 예제를 고르라면 역시 구구단이죠

 

아래는 위 예제의 출력값 요약입니다.

 

1부터 100까지 숫자에서 50~59까지의 숫자는 빼고 덧셈한 합계:4505
100번 반복되었습니다.
1~60까지 더하되 40번쨰 숫자를 제외하고 더한 숫자: 1385
1~5까지 거꾸로 더한 값 : 15
숫자합이 50이 넘어가기 바로 전의 숫자합을 출력한 값 : 45
1~100까지 더한 누적 합이 50미만일때 까지 더하고 출력한 값 :1275

댓글