如何在Java中计算两个字符串中的相互单词?
假设我有两个字符串:如何在Java中计算两个字符串中的相互单词?,java,arrays,string,Java,Arrays,String,假设我有两个字符串: String s1 = "My name is Alex." String s2 = "My name is Nick." 我想让程序计算相互单词并返回值。对于这些字符串,返回值将是3,因为这三个词都有共同点:my、name、is。由于某些原因,在我的程序中,返回的num值总是0 public static int sameWord(String s1, String s2) { int num = 0; String[] a = s1.split("
String s1 = "My name is Alex."
String s2 = "My name is Nick."
我想让程序计算相互单词并返回值。对于这些字符串,返回值将是3,因为这三个词都有共同点:my、name、is。由于某些原因,在我的程序中,返回的num值总是0
public static int sameWord(String s1, String s2) {
int num = 0;
String[] a = s1.split(" ");
String[] b = s2.split(" ");
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < b.length; j++) {
if (a[i] == b[j]) {
num++;
}
}
}
return num;
}
publicstaticintsameword(字符串s1,字符串s2){
int num=0;
字符串[]a=s1。拆分(“”);
字符串[]b=s2。拆分(“”);
对于(inti=0;i
正如jackarms所说,您使用==来比较应该使用.equals的字符串。看
试一试
int num=0;
字符串[]a=s1。拆分(“”);
字符串[]b=s2。拆分(“”);
for(int i=0;i
您使用==来比较字符串——您应该使用.equals
在Java 8+中,我这样做的方式类似于返回(int)Stream.of(a).过滤器(x->Stream.of(b).anyMatch(y->x.equals(y)).count()代码>-或返回一个long
并移除强制类型转换。我也更喜欢\\s+
作为正则表达式(而不是“
)。最后,不要使用==
来比较对象的值。
int num = 0;
String[] a = s1.split(" ");
String[] b = s2.split(" ");
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < b.length; j++) {
if (a[i].equals(b[j])) {
num++;
}
}
}
return num;