2011-03-19 4 views
1

url의 텍스트 파일에서 한 줄을 문자열로 가져와 문자열이 올바른 값을 반환합니다. 그러나, 내가 문자열을 읽은 후에 문자열을 호출하면 null이 반환됩니다.bufferedreader 다음에 null을 반환하는 문자열

나는 무슨 일이 일어나고 있는지 전혀 알지 못하며 어떤지도라도 감사 할 것입니다. 이 파일의 끝에 도달하면

static protected String readURL() { 
    String u = "http://adamblanchard.co.uk/push.txt"; 
    URL url; 
    InputStream is; 
    InputStreamReader isr; 
    BufferedReader r; 


    try { 
     System.out.println("Reading URL: " + u); 
     url = new URL(u); 
     is = url.openStream(); 
     isr = new InputStreamReader(is); 
     r = new BufferedReader(isr); 
     do { 
     str = r.readLine(); 
     if (str != null) 
      System.out.println(str); //returns correct string 
     } while (str != null); 
    } catch (MalformedURLException e) { 
     System.out.println("Invalid URL"); 
    } catch (IOException e) { 
     System.out.println("Can not connect"); 
    } 
    System.out.println(str); //str returns "null" 
    return str; 
    } 

답변

2

BufferedReader.readLine() 방법은 null를 반환합니다.

프로그램이 파일의 각 행을 읽고 인쇄하고 마지막으로 하단에 str 값을 인쇄하는 것 같습니다. 읽기 루프 종료 조건은 strnull이라는 점을 감안할 때 인쇄되는 것이고 그 방법으로 반환되는 것입니다.

do { 
    str = r.readLine(); 
    if (str != null) 
     System.out.println(str); //returns correct string 
} while (str != null); 

내에서 파일의 끝까지

0

당신 루프는 따라서 이후 strnull입니다.

1

하이 버디.보세요. do-while 루프.

do { 
     str = r.readLine(); 
     if (str != null) 
      System.out.println(str); 
     } while (str != null); //i.e exit loop when str==null 

그래서, 루프 외부 str을 적절한 상태를 확인하고 결과 문자열을 인쇄 할 while loop를 사용

0

대신 do while loop의 null입니다.

Example construct:   

    BufferedReader in = new BufferedReader(new FileReader("C:/input.txt"));   
    while ((str = in.readLine()) != null) {    
    //write your logic here. Print the required string.   
    }   
관련 문제