2016-11-17 159 views
0

说我有两个字符串:如何计算Java中的两个字符串中的相互单词?

String s1 = "My name is Alex." 

String s2 = "My name is Nick." 

我想要的程序来算的话互助和返回值。对于这些字符串,返回的值将是3,因为这三个词都有共同点:我的名字是。出于某种原因,在我的程序,返回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; 
} 
+2

您使用==比较字符串 - 你应该使用'.equals' – jackarms

+1

我会做的方式,在Java 8+,有点像'回报(INT )Stream.of(a).filter(x - > Stream.of(b).anyMatch(y - > x.equals(y)))。count();' - 或者返回一个'long'并删除。我也更喜欢'\\ s +'作为正则表达式(通过''“'')。最后,不要使用'=='来比较'Object'值。 –

回答

-1

正如jackarms说,你正在使用==,你应该使用.equals比较字符串。见this

尝试

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; 
相关问题