1
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

4 回答 4

5

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

于 2012-12-07T06:59:27.207 回答
3

您的声明:

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

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

试试这个:

if (fileArray.get(i).equals( new Character((char) 7)))
于 2012-12-07T06:59:56.553 回答
3

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

试试这个。确保你fileArray.get(i)的不是空的。

if (fileArray.get(i).charValue() == '7') 
于 2012-12-07T07:03:28.673 回答
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
        }
    }
}
于 2012-12-07T07:02:17.113 回答