2012-04-02 75 views
-1

我有array of strings, String[] data和它的10個元素具有價值Pdata[10]={[email protected]}"P"Java字符串:問題與ASCII值

當我做檢查的data[10],我得到data[10].value[0] = 'P' 80,我不知道是什麼80所指了。

在我的計劃,我想檢查

if (data[10] == "P") { 
    lookUp = data[7] + "." + data[8]+ "." + "Old"; 
} else if (data[10] == "C") { 
    lookUpCode = data[7] + "." + data[8] + "." + "Old"; 
} else { 
    lookUpCode = data[7] + "." + data[8]; 
} 

所以挑戰我這裏的是,即使data[10]="P"即使這樣,我打過去else,而不是第一if循環,有什麼建議?

+0

Java中的== ==比較*變量包含的*引用值。 Java不是C++;) – 2012-04-02 19:15:03

+0

爲什麼反對投票? – Rachel 2012-04-02 19:26:21

+0

如果'data'有10個元素,則試圖訪問'data [10]'應該導致'ArrayIndexOutOfBoundsException'。只有0到9的索引纔有效。 – Jesper 2012-04-02 19:57:54

回答

5

您需要通過價值,而不是參照比較字符串:

if ("P".equals(data[10])) 
+0

是的,我試圖通過參考進行比較。 – Rachel 2012-04-02 18:49:27

+0

...真的嗎?你真的是那麼想嗎? – 2012-04-02 19:02:09

+0

@LouisWasserman:我做錯了,所以這是不正確的。 – Rachel 2012-04-02 19:31:33

0

在Java中進行比較,你必須使用等號(String s)將字符串的方法。在您的代碼中:

data[10].equals("P") 

這是因爲字符串是對象,「==」會比較對象引用。