2016-11-17 161 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; 
相關問題