我需要帮助下面的代码,我无法获得与 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
我不明白
答案 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()方法没有处理正确的类型,并在迭代器的帮助下修复。