0
Скажем, у меня есть две строки:Как считать взаимные слова в 2 строках в Java?
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;
}
Вы используете == для сравнения строк - вы должны использовать '.equals' – jackarms
Как я хотел бы сделать это в Java 8+, что-то вроде' возврата (межд) Stream.of (a) .filter (x -> Stream.of (b) .anyMatch (y -> x.equals (y))). Count(); '- или возвращает' long' и удаляет листинг , Я также предпочел бы '\\ s +' как регулярное выражение (над '' ''). Наконец, не используйте '==' для сравнения значений «Object». –