黑马程序员技术交流社区

标题: 笔试的一道题求助 [打印本页]

作者: fatesabering    时间: 2014-12-24 21:00
标题: 笔试的一道题求助
笔试的题 不过我无法让a排在第一位而逗号排在最后,哪位大神能帮我指点一下,这个比较器该怎么写呢
  1. package com.itheima;

  2. import java.io.*;
  3. import java.util.Collections;
  4. import java.util.Comparator;
  5. import java.util.Iterator;
  6. import java.util.TreeMap;

  7. /*
  8. * 6、 把当前文件中的所有文本拷贝,存入一个txt文件,统计每个字符出现的次数并输出,例如:

  9.    a:  21 次
  10.    b:  15 次
  11.    c: 15 次
  12.         把:  7 次
  13.         当:  9 次
  14.         前:  3 次
  15.         ,:30 次

  16. * */
  17. class MyComp implements Comparator<Character>
  18. {
  19.         public int compare(Character ch1,Character ch2)
  20.         {
  21.                 int num = ch1.compareTo(ch2);
  22.                 //if(ch1==','&&ch2==',')
  23.                 //        return 1;
  24.                 return num;
  25.         }
  26. }
  27. public class Test06 {
  28.         public static void main(String[] args) {
  29.                 File f = new File("data.txt");
  30.                 Comparator<Character> c = new MyComp();
  31.                 copyAndCount(f,c);
  32.         }
  33.         public static void copyAndCount(File f,Comparator<Character> c)
  34.         {
  35.                 BufferedReader bufr = null;
  36.                 BufferedWriter bufw = null;
  37.                 try {
  38.                         bufr = new BufferedReader(new FileReader(f));
  39.                         bufw = new BufferedWriter(new FileWriter("copy.txt"));
  40.                         TreeMap<Character, Integer> tm = new TreeMap<Character,Integer>(c);
  41.                         int ch=0;
  42.                         int count =0;
  43.                         while((ch=bufr.read())!=-1)
  44.                         {
  45.                                 bufw.write(ch);
  46.                                 Integer value = tm.get((char)ch);
  47.                                 if(value!=null)
  48.                                         count=value;
  49.                                 count++;
  50.                                 tm.put((char)ch, count);
  51.                                 count=0;
  52.                         }
  53.                         Iterator<Character> it = tm.keySet().iterator();
  54.                         while(it.hasNext())
  55.                         {
  56.                                 char key = it.next();
  57.                                 Integer time = tm.get(key);
  58.                                 System.out.println(key+": "+time+" 次");
  59.                         }
  60.                 } catch (IOException e) {
  61.                         // TODO: handle exception
  62.                         System.out.println(e.toString());
  63.                 }
  64.                 finally
  65.                 {
  66.                         try {
  67.                                 if(bufr!=null)
  68.                                         bufr.close();
  69.                         } catch (IOException e2) {
  70.                                 // TODO: handle exception
  71.                                 System.out.println(e2.toString());
  72.                         }
  73.                         try {
  74.                                 if(bufw!=null)
  75.                                         bufw.close();
  76.                         } catch (IOException e2) {
  77.                                 // TODO: handle exception
  78.                                 System.out.println(e2.toString());
  79.                         }
  80.                 }
  81.         }
  82. }
复制代码

作者: kerner    时间: 2014-12-24 22:13
没有明白你的问题,你这程序是正确的啊,按照自然顺序,a排在第一位啊,","排在最后一位。
作者: 只会金克斯    时间: 2014-12-24 22:28
。。。。。。。。。。。。。。
作者: 清风笑烟雨    时间: 2014-12-24 22:56
路过。。。
作者: 黑马-李权88    时间: 2014-12-25 00:29
入学考试的笔试题目吗?
作者: 油茶籽    时间: 2014-12-25 00:56
是入学考试题?还是找工作时的面试题?
作者: 提米特    时间: 2014-12-25 20:08
怎么不写注释呢?  
作者: chudaming213    时间: 2014-12-25 20:31
比较器有问题,重写compareTo方法。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2