Menu
CoddyTech

Thống kê nâng cao

Thuộc phần Logic và luồng chương trình trong hành trình Java của Coddy. Bài học 53 trên 59.

Giờ chúng ta sẽ bổ sung các thống kê nâng cao bằng những phương thức của HashMap để tìm các từ xuất hiện nhiều nhất hoặc ít nhất và tính tỷ lệ phần trăm.

challenge icon

Thử thách

Dễ

Điều chỉnh chương trình để hiển thị:

  1. Tổng số từ
  2. Số từ riêng biệt
  3. Mỗi từ cùng số lần xuất hiện và tỷ lệ phần trăm trên tổng số từ, mỗi từ một dòng, theo thứ tự bảng chữ cái (TreeMap giữ các khóa theo thứ tự đã sắp xếp; nếu dùng HashMap, hãy sắp xếp các khóa trước khi in ra)

Ví dụ:

Đầu vào:

Coddy!

Đầu ra mong đợi:

Total words: 1
Unique words: 1
Word statistics:
coddy: 1 (100.00%)

Tự làm thử

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());
        }
    }
}
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Logic và luồng chương trình

Tự luyện tập: Trình biên dịch Java online