looksee13   1년 전

/**************************************** 1. 런타임 에러(nullpointer) 뜨는 코드 *******************************************/

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

String str="";

while(!(str = br.readLine()).isEmpty()){

/**************************************** 2. 정답 처리 된 코드 *******************************************/

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

String str="";

while((str = br.readLine())!= null){

/**************************************** 3. BufferedReader 개행문자 입력 결과 ******************************************/

String str="";
System.out.println(str == null); //false
str = null;

System.out.println(str == null); //true
str = br.readLine(); //엔터만 쳤음

System.out.println(str == null); //false

/****************************************/

3번의 결과를 따라서 readLine()에 \n을 입력하면 String ""이 오면 null처리가 안되는 구나 싶어서 

1번과 같이 입력했는데 런타임에러가 떴고 2번으로 교체하자 정상적으로 등록이 되었습니다.

nullpointer가 뜨는 부분이 isEmpty() 인 것은 알겠습니다.. 

그런데 2번은 오히려 이클립스에서 코드가 원하는 데로 작동을 안하더라고요 이 차이를 알고 싶습니다. 

왜 백준에서는 1번으로 하면 널포인트가 뜨고 이클립스에서 2번으로 하면 무한루프를 돌까요?

그저 ide 차이일까요?

개행문자(엔터)를 입력받을 때는 null로 판단 하지 않다가 콘솔창을 나갈때(crtl+z)는 null로 판단하는 이유가 뭘까요? 

댓글을 작성하려면 로그인해야 합니다.