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> ();
。
答案 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
}
}
}