2016-05-13 5 views
0

У меня есть основная строка.Как найти совпадающие слова из строк и процентное значение?

String main = "привет, как дела? Я в порядке.";

, а затем несколько строк ..

Строка string1 = "привет людям, что является необходимость ................ как к ................... ... ....... и вам может понадобиться только изменение ................................ ......... в штраф ситуация ............... .................................. выполнить задание ........... ........ Я хорошо ............... вы хорошо? ";

(может быть около 100 слов)

Строка STRING2 = "как делать ................... я не знаю потребность ......... какой я предположительно делать .......... fine i am .......... okay .. ";

(может быть около 100 слов)

Строка string3 = "некоторая строка снова ................";

(может быть около 100 слов)

Строка String4 = "некоторая строка снова ................";

(может быть около 100 слов)

Теперь, что я должен сделать это, есть 7 слов в основной строки ..

и как вы можете видеть, все эти 7 слов присутствуют в строке1 .. 4 слова присутствуют в строке2 .. и продолжаются.

Итак, теперь процентное значение для строки1 равно 100% .. для строки2, процентное значение, 57.xx %.. а также так далее ..

Итак, я хочу, чтобы получить эти процентное значение программно ..

То, что я пытался до сих пор есть,

String perc; 

String[] q1 = str1.split(" "); 
String[] q2 = main.split(" "); 

for (String temp1: q1) { 
    for (String temp2: q2) { 
     if(temp1.equals(temp2)) { 
      // Some code here 
     } 
    } 
} 

Теперь я не знаю, с чего начать?

ответ

1

Вот как это можно сделать:

String main = "hi how are you? i am fine."; 
// Extract all the words whose length is > 1 and remove duplicates 
Set<String> mainWords = new HashSet<>(); 
for (String s : main.split("\\W")) { 
    if (s.length() > 1) { 
     mainWords.add(s); 
    } 
} 
String string1 = "hi people what is the need................ how to ................... do the needful.................................. and you can only need the change......................................... in the fine situation................................................. to do the task................... i am alright............... are you okay?"; 

Set<String> mainWordsToFind = new HashSet<>(mainWords); 
// Iterate over all the words and remove the word from the list to find 
for (String word : string1.split("\\W")) { 
    if (word.length() > 1) { 
     mainWordsToFind.remove(word); 
    } 
} 

// Print the percent of word found 
System.out.println((double) (mainWords.size() - mainWordsToFind.size())/mainWords.size()); 

Выход:

1.0 
+0

К сожалению мне не удалось получить выход с вашим ответом. . –

+0

Нет, я использую java 7.80 –

+0

Это работает. Но я есть один вопрос, то есть, поскольку в основной строке есть 7 слов, и все эти слова присутствуют в строке1, тогда значение% должно быть 100% .. но я получаю ** 0.025157232704402517 ** даже я сделал ** ((double) totalFound/totalWords) * 100 **, но тогда значение будет ** 2.5157232704402517 **, поэтому я думаю, что это нежелательный вывод, иначе ваш код работает нормально. Благодарю. –

0

Попробуйте

String string1 = "hi people what is the need how to do the needful and you can only need the changein the fine situation to do the task i am alright are you okay?"; 


    String string2 = "how to do i don't know the need what i am supposed to do fine i am okay.."; 

    int count = 0; 
    String[] array = string1.split(" "); 
    ArrayList<String> processedWords = new ArrayList<>(); 
    for(String str : array){ 

     if (string2.contains(str) && !processedWords.contains(str) && str.length() > 0){ 
       System.out.println(str); 

      processedWords.add(str); 
      count++; 
     } 

    } 
    System.out.println("Total words: " +array.length); 
    System.out.println("Count: " +count); 

    System.out.println("Percent value: " +((float)count/array.length)*100); 
+0

Я получаю такой же ответ для всех строк .. как и те же ans для str1, str2, str3, ......, strN и т. Д. Потому что я сравнил все строки со строкой main .. –

+0

получил выход с некоторыми реализациями. –

 Смежные вопросы

  • Нет связанных вопросов^_^