如果声明错误?

时间:2012-12-07 06:56:54

标签: java if-statement arraylist

public void decompressTo(String fileName) throws IOException {

    for (int i = 0; i < fileArray.size(); i++) {
        if (fileArray.get(i) == new Character((char) 7)) {
            //do stuff
    }
    else {
        //do other stuff
    }
}

问题是我的if语句永远不会被执行,相反,for循环总是跳转到else语句。

但是,我从肯定中读取的fileArray ArrayList包含铃声字符(ASCII字符#7)。我已声明fileArray如下:ArrayList <Character> fileArray = new ArrayList <Character> ();

4 个答案:

答案 0 :(得分:5)

==是java中的引用相等(检查两个引用是否引用相同的对象,而不是两个相等的对象)。请改用fileArray.get(i).equals(...)

答案 1 :(得分:3)

您的陈述:

if (fileArray.get(i) == new Character((char) 7))

将始终false==检查相同的对象。

请改为尝试:

if (fileArray.get(i).equals( new Character((char) 7)))

答案 2 :(得分:3)

创建new Character((char) 7))似乎是不必要的对象创建。因此

试试这个。让你的fileArray.get(i)不为空。

if (fileArray.get(i).charValue() == '7') 

答案 3 :(得分:2)

如果这是整个方法,那么你缺少一个花括号。还要确保在比较字符串时使用equals,否则按位检查它而不是字符串内容。

public void decompressTo(String fileName) throws IOException {

    for (int i = 0; i < fileArray.size(); i++) {
        if (fileArray.get(i).equals(new Character((char) 7))) {
            //do stuff
        } else {
            //do other stuff
        }
    }
}