본문 바로가기
  • Adillete
【Java】

[JAVA] whlie문 밖에 또는 안에 무한루프의 궤도

by 아딜렛 2025. 8. 19.
   int data = is.read();       //이렇게 쓰면 망한다.                             
      while (true) {
        

        if (data == -1)
          break;

        System.out.println(data);
      }
      is.close();
    } catch (Exception e) {

      e.printStackTrace();
    }
    
    /*
    이렇게 쓰자 ↓
    */
                                                
      while (true) {
        int data = is.read();

        if (data == -1)
          break;

        System.out.println(data);
      }
      is.close();
    } catch (Exception e) {

      e.printStackTrace();
    }

while 문 안에 int data가 있느냐 없느냐가 무한 루프를 멈추느냐 아니냐가 되어버린다.

 

이유: int data = is.read();가 while문 밖에 있어버리면 계속 새롭게 정의되어서 

딱 한 번만 첫 번째 바이트를 읽고 while 문 안에있는 data 변수는 처음에 읽은 값으로 고정되어버린다.

같은 값만 무한으로 출력된다.