无法获得正确的字符串比较

时间:2017-04-23 15:18:19

标签: java

我需要帮助下面的代码,我无法获得与 deleteNode 方法相关的字符串比较。 我搜索了StackOverflow并且How do I compare strings in Java?很有帮助,尤其是 Objects.equals

但是,运行该方法会覆盖所有if语句,而 never 项将被删除。 PS,原谅我的英语,不是母语。

我的代码:

public void deleteNode(String clientAddr) {
    boolean isFound = false;
    for (ClientNode client : srv.connections) {
        if (Objects.equals(client.getIpAddr(), clientAddr)) {
            isFound = true;
            srv.connections.remove(clientAddr);
            break;
        }
    }
    if (!isFound) {
        System.out.println("Provided address is not found!");
        System.exit(0);
    }
}

以上是通过:

调用的
starNetwork.deleteNode("10.10.10.3");

例如,如果我运行以下内容:

public void deleteNode(String clientAddr) {
    for (ClientNode client : srv.connections) {
        System.out.println(Objects.equals(client.getIpAddr(), clientAddr));
    }
}

输出:

false
true
false

我不明白

2 个答案:

答案 0 :(得分:0)

只检查第一个元素,如果找不到,则退出程序。 而是尝试循环其余的元素。

此外,您不能在Object(ClientNode类型)列表中使用remove()并传递String。 这意味着您正在尝试将ClientNode对象与String进行比较,这是不可能的。所以List没有删除任何元素。

建议在这种情况下使用迭代器。

变化:

System.out.println("Provided address is not 
found!");

To Like like:

#Define Custom Function to get Data
pull = function(abbreviation,from,to){
  getSymbols(Symbols = abbreviation, from = as.Date(from), to = as.Date(to),env = .GlobalEnv, reload.Symbols = FALSE, verbose = FALSE, warnings = TRUE, src = "yahoo", symbol.lookup = TRUE, auto.assign = TRUE)
  #return(abbreviation_data) ##This part did not work but that should not be the relevant one inn this function as the function itself works;
}

如果你不想使用旗帜,那么首先如果条件写了一个回报;
在循环之外盲目地写一个abbreviation = c("MSFT","AAPL") from = c("2010-01-01","2011-01-01") to = c("2017-04-19","2017-04-19") stocks = data.frame(abbreviation,from,to)

答案 1 :(得分:0)

在下面的用户Bandi Kishore的帮助下回答了问题。 我的deleteNode()方法没有处理正确的类型,并在迭代器的帮助下修复。