2012-04-27 83 views
1

我在Java上有點生疏。我有一個數組,其中有一個值用於if語句中。如果沒有滿足Java語句

這是我檢查的單個字符,它不工作的事實導致我相信它可能是一個空白問題。數據來自mysql數據庫,我已經嘗試在查詢中使用trim()來擺脫任何空格,但沒有運氣。

下面的代碼:

Payoff payoff=new PlainVanillaPayoff(Option.Type.Put,Strike); 
    if(inputData[8] == "C"){ 
     System.out.println("TypeCall"); // Check to see whether if stmt is ever true. 
     payoff=new PlainVanillaPayoff(Option.Type.Call,Strike); 
    } else{} 

稱爲if聲明從未打印內的打印語句。

有什麼建議嗎?

+0

什麼'inputData'陣列店? – 2012-04-27 13:52:42

+0

這個問題已被多次詢問 - 右邊的'相關'列表中有例子。請在提交問題前進行更多研究。 – 2012-04-27 13:56:20

回答

3

這是因爲您使用==來比較String。您應該改用equals

if(inputData[8].equals("C")) 
3

假設代碼編譯,問題是你正在比較字符串與==;你應該使用equals(或有時你想equalsIgnoreCase):

if(inputData[8].equals("C")){ 

字符串中的Java是對象==運算符比較對象標識(做兩個變量包含同一對象的引用)的沒有內容對象。

2

如果inputData[8]是一個字符串,你應該使用equals方法,而不是==

if("C".equals(inputData[8])) 

也把"C"首先確保你不會得到一個空指針異常,如果`inputData [8] 1空值。

1

如果inputData是String[],則應該使用inputdata[8].equals("C")代替。如果它不是一個String[],這絕不會fullfill,因爲它們是不同類型的:)

1

如果inputData的類型是String[]那麼我想你的問題是,你是比較引用而不是使用.equals() -function。

正確:

if(inputData[8].equals("C")) 
0

是數組的字符串數組或字符數組?

在你使用字符串比較或當需要使用「if子句'使用char這樣做的時候。

如果它是一個字符串,嘗試這樣的事情你如果條款

stringname.charAt(x) == 'C' 
-1

如果inputData是一個字符數組?

if(inputData[8] == 'C') should solve it. 

否則,你可以嘗試只是爲了看看它實際上確實包含「C」

Payoff payoff=new PlainVanillaPayoff(Option.Type.Put,Strike); 
    if(inputData[8] == "C"){ 
     System.out.println("TypeCall"); // Check to see whether if stmt is ever true. 
     payoff=new PlainVanillaPayoff(Option.Type.Call,Strike); 
    } else{ System.out.println("inputData[8] contains: ->" + inputData[8] + "<-");} 
相關問題