2012-09-22 2 views
1

제목으로 특정 키워드를 입력했을 때 루프를 종료하고 싶습니다.BufferedReader readLine() - 특정 문자열을 입력하면 종료

try { 
    buf = br.readLine(); 
    while (buf != "doh") { 
     buf = br.readLine(); 
    } 
} 

두 질문 : 내 명령 프롬프트에서 doh를 입력하면

  1. ,이 루프를 종료하지 않습니다. 나는 그것이 내가 Ctrl 키 + Z을 누를 경우에만 작동 "buf != null"을 넣으면

  2. . 아무 것도 입력하지 않으면 (그냥 Enter 키를 누름) 루프를 종료하지 않습니다.

+0

두 번째 점은 입력을 압박 때문에 "\ n을"을 준다, 그러나 ReadLine 메서드는 다른 양식 널 (null)는 그냥 ""얻을 말 (빈 문자열)에서 "\ n을"를 삭제하기 때문에 . 첫 번째 질문에 대해서는 답을 확인하십시오. – raven1981

답변

2

!= 대신 equals 메서드를 사용하십시오. 연산자 !=은 객체에 대한 참조가 동일하지 않은 경우에만 true를 반환합니다. 메서드 equal wil은 문자열 char과 char을 비교합니다.

2

당신은 ==으로 (일반적으로 물체) 문자열을 비교해서는 안, 즉이 프리미티브 (int, char, boolean 등)에만 사용된다. 개체의 경우 equals 메서드를 사용합니다.

try { 
    buf = br.readLine(); 
    while (! buf.equals("doh")) { 
     buf = br.readLine(); 
    } 
} 
관련 문제