文件out.txt中内容:
2765<6720<2765
1236===1236===1236
2678---------0267-----0256
567   / 12679   /  2457
2567/4579/4578请编写程序,统计每个数字0~9文件中出现的次数。
结果如下:
文字出现了5行
0出现3次
1出现4次
2出现12次
3出现3次
4出现3次
5出现8次
6出现12次
7出现11次
8出现2次
9出现2次

解决方案 »

  1.   

    import java.io.*;public class Counter {
      
      public static void main(String[] args) throws Exception {
        
        InputStream in = new FileInputStream(new File("out.txt"));
        BufferedReader reader = new BufferedReader(
                new InputStreamReader(in));
        
        String line;
        int[] counters = new int[10];
        int lineCounter = 0;
        while( (line = reader.readLine()) != null ) {
          
          lineCounter++;
          count(line, counters);
        }
        
        System.out.println("文字出现了" + lineCounter + "行");
        for(int i=0; i<counters.length; i++) {
          
          System.out.printf("%d出现%d次\n", i, counters[i]);
        }
        
        reader.close();
        in.close();
      }
      
      private static void count(String line, int[] counters) {
        
        for(int i=0; i<line.length(); i++) {
          
          char c = line.charAt(i);
          if( Character.isDigit(c) )
            counters[c - '0']++;
        }
      }
    }
      

  2.   


    /**
     * 
     * @param fileName  文件名(完整路径)
     * @return
     * @author cai
     * @date 2012-7-5 上午10:13:39
     */
    public static int[] sumDigital(String fileName){

    BufferedReader br = null ;
    String str = "" ;
    int retArr[] = new int[10] ;
    List list = new ArrayList() ;
    try {
    br = new BufferedReader(new FileReader(fileName));
    while ((str = br.readLine()) != null) {
    list.add(str);
    }
    } catch (Exception e) {
    e.printStackTrace();
    } finally {
    try {
    br.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    char c  ;
    for (int i = 0 ; i < list.size(); i++){
    str =(String) list.get(i) ; 
    for (int j = 0; j < str.length(); j++){
    c = str.charAt(j) ;

    if (c >= '0'  && c <= '9'){
    retArr[c - 48]++ ;  //字符0 的ascii为 48
    }
    }
    }
    return retArr ;
    }0 出现次数 :3
    1 出现次数 :4
    2 出现次数 :12
    3 出现次数 :3
    4 出现次数 :3
    5 出现次数 :8
    6 出现次数 :12
    7 出现次数 :11
    8 出现次数 :2
    9 出现次数 :2
      

  3.   

    用数组,hashmap都行的。好像数组简单点。a[0]放0的个数,以此类推,找到值对应的数组元素+1
      

  4.   


    /**
     * 
     * @param fileName  文件名(完整路径)
     * @return
     * @author cai
     * @date 2012-7-5 上午10:13:39
     */
    public static int[] sumDigital(String fileName){

    BufferedReader br = null ;
    String str = "" ;
    int retArr[] = new int[10] ;
    char c  ;
    try {
    br = new BufferedReader(new FileReader(fileName));
    while ((str = br.readLine()) != null) {
    for (int j = 0; j < str.length(); j++){
    c = str.charAt(j) ;
    if (c >= '0'  && c <= '9'){
    retArr[c - 48]++ ;  //字符0 的ascii为 48
    }
    }
    }
    } catch (Exception e) {
    e.printStackTrace();
    } finally {
    try {
    br.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    return retArr ;
    }