2012-11-27 107 views
1

我的應用程序有問題。我希望應用程序檢測到,如果用戶沒有爲該字符串輸入任何值(換句話說,在被要求輸入內容後按回車鍵),應用程序會詢問他/她是否希望退出該程序。
我在做對吧?掃描器的空字符串

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

也許你應該檢查空字符串,而不是空? – ArVan

+1

親自試一試,看看它是否有效? –

回答

7

不,你不這樣做是正確的。

nextLine()將返回一個字符串,如果用戶剛剛返回。據我所知,從不返回null。如果已達到輸入的結尾,則將拋出NoSuchElementException(與BufferedReader.readLine()不同,其中在該情況下返回null)。所以,你想:

if (words.equals("")) 

if (words.length() == 0) 

if (words.isEmpty()) 

...並使用hasNextLine()如果你想先檢測輸入的結束。

0

這應該工作:

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

字符串有一個length()方法沒有長度屬性:P – PermGenError

+1

如果'words'爲null,'words.equals(null)'將導致空指針異常 –

+0

touché,你是對的!我不知道這是一個字符串或字符[] – Chexpir

4

空是不正確的,因爲你得到的是一個空字符串:

使用: words.isEmpty()words.equals("")words.length()==0

5

不,你不是。

如果用戶只是按下輸入,您將得到一個空字符串,而不是null。這可以檢查爲

if(words.equals("")) 

如果有空格,這將失敗。在這種情況下,

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

應該工作。

+0

感謝這個答案:)) – Xelza

+0

嗯,我認爲我應該得到這個徽章......因爲有答案接受@JonSkeet在同一個帖子! :D – 0605002

+0

......好吧,即使它只有幾分鐘! :P – 0605002

0

返回的字符串isnt null,它只是一個空字符串。

words.equals(""); 

應該是正確的