2012-11-27 7 views
1

내 응용 프로그램에 문제가 있습니다. 사용자가 문자열에 대한 값을 입력하지 않으면 (즉, 무언가를 입력하라는 메시지가 나타나면 Enter 키를 누릅니다) 앱이 프로그램을 종료할지 묻습니다.
맞나요?Null 스캐너 용 문자열

words = s.nextLine(); 
if (words.equals(null)) { 
+1

어쩌면 당신은 빈 문자열을 확인해야 정확하지

words.equals(""); 

을해야 하는가? – ArVan

+1

직접 해보고 작동하는지 확인하십시오. –

답변

7

.

nextLine() 문자열을 반환합니다. 까지 내가 말할 수있는대로 결코 반환 null. 입력의 끝에 도달하면 NoSuchElementException을 반환합니다 (이 경우 이됩니다) BufferedReader.readLine()과 달리. 그래서 당신이 원하는 : 먼저 입력의 끝을 감지 할 경우

if (words.equals("")) 

또는

if (words.length() == 0) 

또는
if (words.isEmpty()) 

... 그리고 hasNextLine()를 사용합니다.

0

이 작동합니다 : 아니, 당신이 바로 그 일을하지 않을

if (words == null || words.length() == 0) { 
+0

'words'가 null 인 경우 문자열의 length() 메소드 길이가 P – PermGenError

+1

입니다. 'words.equals (null)'이 null 포인터 예외가 발생합니다. –

+0

touche, 맞습니다! 나는 그것이 String인지 char인지 확실하지 않았다. [ – Chexpir

4

null는, 당신이 얻을 것은 빈 문자열이기 때문에, 정확하지 :

사용 : words.isEmpty() 또는 words.equals("") 또는 words.length()==0

5

없음 , 당신은 아니에요.

사용자가 단순히 enter 키를 누르면 null이 아닌 빈 문자열이 표시됩니다. 이것은 다음과 같이 검사 할 수 있습니다.

if(words.equals("")) 

공백이 있으면 실패합니다. 이 경우

if(words.trim().equals("")) 

이 작동해야합니다.

+0

]이 대답에 감사드립니다.) – Xelza

+0

글쎄, 나는 이것에 대한 자격이 있다고 생각한다. 대답은 @JonSkeet 같은 게시물에! : D – 0605002

+0

... 음, 몇분 동안이라도! :피 – 0605002

0

반환되는 문자열은 null이 아니며 단지 빈 문자열입니다. NULL,