2012-12-17 97 views
0

只要看看過去的考試試卷和整個以下問題不多大意義,我迷迷糊糊:這段java代碼有什麼問題?

下面這段代碼是爲了迎接以適當的方式將用戶:

public static void main(String[] args) { 
System.out.println("Enter a name"); 
String name = EasyIn.getString(); 
if (name == "") System.out.println("You must input a name"); 
else System.out.println("Hello, " + name); 
} 

這個問題問爲什麼程序可能不會做程序員的意圖。由於目前缺少一臺筆記本電腦(溢出飲料!),我無法用不同的輸入測試代碼等。從我所知道的問題來看,唯一的問題是它不會要求用戶提供另一個輸入名稱,如果它是空白的,只是終止程序。我會用這個作爲答案,但是直接在問題中提到它,這讓我覺得這不是他們正在尋找的答案。代碼還有其他問題嗎?

+2

通常,您不會使用'=='參考數據類型,比如'String' –

+2

是的,還有另一個巨大的問題碼。 –

+0

[This](http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java)可能會讓你感興趣。 – Pshemo

回答

2

另一個String.equals問題,替換:

if (name == "") 

if (name.equals("")) 

==運算符比較對象引用,您需要使用String.equals比較String內容。另外,您可以使用:

if (name.IsEmpty()) 
+0

當然,謝謝:) –

1

變化:

if (name == "") 

到:

if (name.equals("")) 
1

它採用== ""而不是.equals(""),或更好,但.isEmpty()

1

使用String#equals(),不==,檢查字符串相等。

1

唯一的問題是String comparison使用==運算符。這不會產生預期的結果。 ==運算符比較String Reference值,而不是內容。

如果打算比較字符串的contents,則應始終使用equals方法進行字符串比較。

1

您應該使用equals()方法檢查字符串是否相等。 ==運營商在字符串的情況下,只檢查,如果兩個字符串引用相同的字符串對象

if (name == "") 

should be 

if (name.equals("")) 

,或者您也可以使用String.isEmpty()檢查字符串的isEmpty

if (name.isEmpty()) 
0

它與==,而不是比較字符串.equals()

==比較對象引用。它不主張兩個字符串的內容。

0

問題是,你不能用字符串做==。您必須使用方法名稱。等於

0

對不起,我不能離開評論。 1.那麼,你寫的程序剛剛結束時的含義是什麼?我認爲,它應該打印兩個「println()」之一 - 哪個? 2. Mybee你應該插入一些八九不離十循環「而」,將直到用戶操作輸入不是空字符串:

while (!name.equals("")) { ... } 

PS。對不起,我不能留下評論&我看到沒有任何已批准的答案...