2012-11-02 139 views
0

如上所述,我如何查找等於*的字符串?比較等於星號的字符串

我已經試過這樣:

if (string.equals("*")) { 
    return message; 
} 

程序只是不會進入if聲明。我能知道我哪裏錯了嗎?

+3

*沒有這樣的東西*作爲「if-loop」。爲什麼不在調試器中檢查'string'的值是否真的只包含'*'? – Adam

+1

'if(「*」。equals(「*」)){...}'對我來說工作得很好。 'string'包含在你的情況中的是什麼? – Lion

+0

如果您沒有將星號作爲命令行參數傳遞(請參閱我的回答),請發佈一個工作(或者說是一個可編譯但是「問題暴露」)程序。 – Axel

回答

1

此代碼工作正常,下面的代碼返回"happy"安慰,也沒什麼不好在*的字符串上使用.equal

public class NumberFun { 
    static String string = "*"; 
    static String message = "happy"; 

    public static void main(String args[]) { 
     System.out.println(getMessage()); 
    } 

    private static String getMessage() { 
     if (string.equals("*")) { 
      return message; 
     } 
     return "fail"; 
    } 
} 
+0

奇怪,讓我去調試,看看哪裏出錯了。謝謝大衛:) – melyong

0

我想你的String可能有空格。我會通過應用上trim()

if(string.trim().equals("*")){ 
     return message; 
    } 

這裏嘗試爲例子:

String mytem ="*"; 

    if(mytem.equals("*")) 
    { 
     System.out.println("Hello"); 
    } 

輸出:

Hello 
+0

Nambari,我不認爲這是原因。我也試過了。不工作。 :( – melyong

+0

@melyong:看到更新的代碼 – kosa

0

好的,我打算再次打賭:您試圖比較的字符串作爲命令行參數傳遞。但命令行參數由shell擴展(至少在Unix/Linux等)。例如,單個星號將展開爲當前目錄中的文件列表。您的Java程序(甚至JVM)沒有機會看到原始輸入星號。

在比較之前打印字符串。如果我的猜測是真的,請將命令行參數括在引號中以避免shell擴展。