Zaawansowane statystyki
Część sekcji Logika i przepływ sterowania ścieżki Java w Coddy. Lekcja 53 z 59.
Teraz dodamy zaawansowane statystyki, używając metod HashMap do znajdowania najczęściej i najrzadziej występujących słów oraz obliczania procentów.
Wyzwanie
ŁatwyUlepsz program tak, aby wyświetlał:
- Łączną liczbę słów
- Liczbę unikalnych słów
- Każde słowo wraz z jego liczbą wystąpień i procentowym udziałem w całości, po jednym słowie w każdym wierszu, w kolejności alfabetycznej (
TreeMapprzechowuje klucze w kolejności sortowania; jeśli użyjeszHashMap, przed wyświetleniem posortuj klucze)
Na przykład:
Dane wejściowe:
Coddy!Oczekiwany wynik:
Total words: 1
Unique words: 1
Word statistics:
coddy: 1 (100.00%)Spróbuj swoich sił
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String text = scanner.nextLine();
String[] sentences = text.split("\\.");
String[][] textArray = new String[sentences.length][];
HashMap<String, Integer> wordCount = new HashMap<>();
for (int i = 0; i < sentences.length; i++) {
textArray[i] = sentences[i].trim().split(" ");
for (int j = 0; j < textArray[i].length; j++) {
if (!textArray[i][j].isEmpty()) {
String word = textArray[i][j]
.replaceAll("[^a-zA-Z ]", "")
.toLowerCase();
wordCount.put(word, wordCount.getOrDefault(word, 0) + 1);
}
}
}
System.out.println("Word counts:");
for (Map.Entry<String, Integer> entry : wordCount.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
}
}Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Logika i przepływ sterowania
1Tablice wielowymiarowe
Podstawy tablic 2DDostęp do elementów tablic 2DPętle zagnieżdżone z tablicami 2DPodsumowanie — tablice 2DDodawanie i odejmowanie macierzyTablice postrzępioneTablice 3D i większeTypowe wzorce dla tablic 2DPodsumowanie — wszystko o tablicach2HashMap część 1
Czym jest HashMap?Deklarowanie HashMapDostęp do wartościSprawdzanie, czy klucz istniejeModyfikowanie słownikówPodsumowanie — HashMap3HashMap — część 2
Metody HashMapIterowanie za pomocą keySet()Iterowanie za pomocą entrySet()Zagnieżdżona HashMapPowtórka — zarządzanie magazynemPowtórka — operacje na HashMap6Zaawansowany przepływ sterowania
Instrukcje etykietująceWyrażenie switchDopasowywanie wzorcówKlauzule ochronnePowtórzenie — przepływ sterowania9Projekt — licznik unikalnych słów
Wprowadzanie i przechowywanie tekstuPrzetwarzanie słówPoćwicz samodzielnie: Kompilator Java online