遍历for循环:为什么我的第一个if语句不运行?

当 for 循环遍历 'parts' 数组时,它只会直接进入最后一个 'else' 语句,无论它是空索引、句点、两个句点还是字符。我对这个 for 循环的目标是简单地跳过一个索引,如果它不包含任何内容、一个句点或两个句点。为什么第一个 if 语句不运行?

String[] parts = ["", "a",".","b","..","c",""]
        
Deque<String> a = new LinkedList<>();

for(int i=0; i<parts.length; i++) {
    if (parts[i] == "" || parts[i] == "." || (parts[i] == ".." && a.size() == 0)) 
    {
        i++;
    }
    
    else if (parts[i] == ".." && a.size() >= 1) {
        a.removeFirst();
    }
    else {
        a.addFirst(parts[i]);
    }
}

回答

所以有几件事需要改进。

Tim 和 John 提出了一些改进建议,例如 i 变量的双重迭代和使用 .equals() 来比较字符串。

我还要补充一点,这是一个使用增强的 for 循环的好地方,它看起来像这样

for(String item : array) 
    System.out.println(item);

其中 array 是一个 String[] 数组,代码将在新行上打印 array 中的每个项目。

如果您只想跳过“”,“。” 和“..”你可以只使用一个 if 语句来只将项目添加到 LinkedList 如果它们不是这三个中的一个。

所以你可以使用这样的东西:

String[] parts = new String[] {"", "a",".","b","..","c",""};

Deque<String> a = new LinkedList<>();

for(String item : parts)
    if( !(item.equals("") || item.equals(".") || item.equals("..")) )
        a.addFirst(item);
            
System.out.println(a);

从这个输出是

[c, b, a]

因此,对于部件数组中的每个项目,您检查它是否不等于“”、“。”之一。或“..”,如果不是,则将其添加到 LinkedList。

我不确定您在检查 LinkedList 的大小或删除第一项时尝试做什么,但我希望这就是您要查找的内容。


以上是遍历for循环:为什么我的第一个if语句不运行?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>