我正在尝试编写一个接受String的方法,将其转换为字符串数组,然后在该Array中搜索特定的String。这是我的代码:
public static void ThereOrNaw ( String s, String s2 ){
String[] words = s.split("\\s");
for (int i = 0; i < words.length; i++) {
words[i] = words[i].replaceAll("[^\\w]", "");
}
for ( int i = 0; i < words.length; i++) {
if( s2 == words[i] ) {
System.out.println("Found");
}
else if( s2 != words[i] && (i + 1) == words.length) {
System.out.println("Not Found");
}
}
}
但是,当我运行此方法时,即使元素在Array中,它也始终返回“Not Found”。除非,字符串数组只有我正在寻找的元素。任何想法为什么这不起作用?
答案 0 :(得分:0)
您应该使用equals()
而不是==
。
==
比较你的String
对象不是按内容,而是通过内存中的真实地址(简单来说)。
因此,如果您使用equals()
,则会按内容比较String
个对象。
如果您不关心案例,也可以使用equalsIgnoreCase()
方法。
还有一个小建议,在你调用s2
之前检查null
不是equals()
,因为你不知道哪个对象客户端将发送给这个方法。
例如:
if (s2 != null && s2.equals(words[i])) { ...
else if (s2 != null && !s2.equals(words[i]) ...
答案 1 :(得分:0)
他表示你不必使用==比较单词,==比较对象
看,我为你做了代码更改:
PATH_TO_JAVA_7_JRE
它让我抓狂:
实测值 找不到