2012-04-02 70 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") 

这是因为字符串是对象,“==”会比较对象引用。