给出一段中文,统计该段中文中汉词个数及汉词的使用频率,最后要求按频率高到低输出汉字和频率。(Java)

import java.util.Scanner;
import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;
public class Testzhongwen {

public static void main(String[] args) {
   Scanner m=new Scanner(System.in);
   System.out.println("请输入一串中文:");
   String line=m.nextLine();
   TreeMap<Character,Integer> n=new TreeMap<>();
   for(int i=0;i<line.length();i++){
       char key=line.charAt(i);
       Integer value=n.get(key);
       if(value==null){
           n.put(key, 1);
       }
       else{
           value++;
           n.put(key, value);
       }
   }
   // String regex ="[^\\u4e00-\\u9fa5.]+";
   StringBuilder sb=new StringBuilder();
   Set<Character> keySet=n.keySet();
   for(Character j:keySet){
       Integer value=n.get(j);
       sb.append(j).append("(").append(value).append(")");
   }
   String re=sb.toString();
   System.out.println(re);
}

}

这是我的代码,输入英文就对,输入中文就不对
请问该怎么解决呢?

中文是双字节字符。不能直接用charAt