881814398608256
김도윤
  • 2016.7.2 14:02
  • 조회수 140
  • 답변수 1
881814398608256
김도윤
  • 2016.7.2 14:02
  • 조회수 140
  • 답변수 1

계속 생각하다가 이렇게 풀어봤습니다.

public class WhileExam{
  public static void main(String[] args){
    int i = 1;
    while(i<=10){
                    if(i%2==0){
      System.out.println(i);

      i++;
           }
    }
  }
}

처음엔 괄호를 증감 밑에다 두었다가 위에 두었더니 되더라구요 아직 {} <- 의미를 잘모르겠습니다.

public class WhileExam{
  public static void main(String[] args){
    int i = 1;
    while(i<=10){
                    if(i%2==0){
      System.out.println(i);
         }
      i++;

    }
  }
}

WhileExam.java
public class WhileExam{
  public static void main(String[] args){
    int i = 1;
    while(i<=10){
                    if(i%2==0){
      System.out.println(i);
         }
      i++;

    }
  }
}
  • #자바 입문
  • #while문 - 실습

1 답변

  • Spgjnhnsidwygch8ddkd
    Chandler
    • 2016.7.2 16:38

    public class WhileExam{
      public static void main(String[] args){
        int i = 1;
        while(i<=10) {
          if(i%2==0) {
            System.out.println(i);
            i++;
          }
        }
      }
    }
    

    중괄호는 코드의 수행 범위라고 보시면 이해하기 쉽습니다.
    위의 코드를 보시면 if문 내부에 출력문과 i++ 이 같이 들어있죠.
    즉, if문의 조건이 맞을 때만 출력문과 i++ 를 실행한다는 얘기입니다.

    첫번째 코드의 실행 순서
    1) while문으로 들어갔을때 i 는 1의 값을 가집니다.
    2) if문 조건이 안맞기 때문에 if내부의 출력문과 i++ 를 실행하지 않고 넘어갑니다.
    3) 더 이상 실행할 코드가 없으므로 다시 while문의 조건을 확인하러 갑니다.
    4) i = 1 로 while문의 조건이 참, while문 내부로 들어갑니다.
    결과를 보면 1,2,3,4의 반복이 되겠죠. 무한루프가 발생하게 됩니다.

    반면 수정된 코드는 i++;가 if문 밖에 있기때문에 while문이 한번 돌때마다 i가 1씩 증가합니다.
    때문에 i 의 값이 11이 되면 while문을 빠져나올 수 있는 것 입니다.

답변 쓰기

이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.