现在的位置: 首页代码如诗, 计算机>正文
文本文件单词的检索与计数(Java)
发表于136 天前 代码如诗, 计算机 评论数 1 ⁄ 被围观 463 views+

这几天刚刚做了个小程序,文本文件单词的检索与计数,分享给大家。

要求编程建立一个文本文件,每个单词不包含空格且不跨行,单词由字符序列构成且区分大小写;统计给定单词在文本文件中出现的总次数;检索输出某个单词出现在文本中的行号、在该行中出现的次数以及位置。该设计要求可分为三个部分实现:其一,建立文本文件,文件名由用户用键盘输入;其二,给定单词的计数,输入一个不含空格的单词,统计输出该单词在文本中的出现次数;其三,检索给定单词,输入一个单词,检索并输出该单词所在的行号、该行中出现的次数以及在该行中的相应位置。

(1)打开文本文件

(2)给定单词的计数

(3)检索单词出现在文本文件中的行号、次数及其位置

(4)主控菜单程序的结构

Code   ViewCopyPrint

  1. package charCount;   
  2.   
  3. import java.io.BufferedReader;   
  4. import java.io.File;   
  5. import java.io.FileInputStream;   
  6. import java.io.FileNotFoundException;   
  7. import java.io.FileWriter;   
  8. import java.io.IOException;   
  9. import java.io.InputStreamReader;   
  10. import java.io.UnsupportedEncodingException;   
  11. import java.text.DecimalFormat;   
  12. import java.util.ArrayList;   
  13. import java.util.Collections;   
  14. import java.util.Comparator;   
  15. import java.util.HashMap;   
  16. import java.util.List;   
  17. import java.util.Map;   
  18. import java.util.Scanner;   
  19. import java.util.Map.Entry;   
  20.   
  21. /** 统计小说的字符 */  
  22. public class CharCountDemo {   
  23.     static File file;   
  24.   
  25.     public static void main(String[] args) throws IOException {   
  26.   
  27.         Scanner scanner = new Scanner(System.in);   
  28.         while (true) {   
  29.             System.out.println(“文本文件单词的检索与计数,作者左上上,copyright zuoshangs\n请选择菜单”);   
  30.             System.out.println(“1:打开文件”);   
  31.             System.out.println(“2:单词定位”);   
  32.             System.out.println(“3:单词计数”);   
  33.             System.out.println(“4:退出程序”);   
  34.             System.out.println(“请选择”);   
  35.                
  36.             String choice = scanner.nextLine().trim();   
  37.   
  38.             if (choice.equals(“1″)) {   
  39.                 // 打开文本文件   
  40.                 createFile();   
  41.             } else if (choice.equals(“2″)) {   
  42.                 // 单词定位   
  43.                 System.out.println(“请输入定位的单词”);   
  44.                 String word = scanner.nextLine().trim();   
  45.                 boolean flag = position(word);   
  46.                 if (!flag) {   
  47.                     System.out.println(“未找到” + word);   
  48.                 }   
  49.             } else if (choice.equals(“3″)) {   
  50.                 // 单词计数   
  51.                 System.out.println(“请输入要计数的单词”);   
  52.                 String word = scanner.nextLine().trim();   
  53.                 int count = count(word);   
  54.                 System.out.println(word + “的数量为” + count);   
  55.             } else if (choice.equals(“4″)) {   
  56.                 // 退出程序   
  57.                 System.out.println(“程序即将关闭”);   
  58.                 break;   
  59.             } else {   
  60.                 System.out.println(“输入错误,请重新输入”);   
  61.             }   
  62.         }   
  63.     }   
  64.   
  65.     private static int count(String word) {   
  66.         // TODO Auto-generated method stub   
  67.   
  68.         int count = 0;   
  69.         try {   
  70.             FileInputStream fis = new FileInputStream(file);   
  71.             InputStreamReader isr = new InputStreamReader(fis, “gbk”);   
  72.             BufferedReader in = new BufferedReader(isr);   
  73.             // 读取每一行   
  74.             List<String> lineStr = new ArrayList<String>();   
  75.             String str;   
  76.             for (int i = 0; (str = in.readLine()) != null; i++) {   
  77.                 lineStr.add(str);   
  78.   
  79.             }   
  80.             // 把每一行拆分为数组,存为ArrayList<String[]>类型   
  81.             List<String[]> lineArr = new ArrayList<String[]>();   
  82.             // Map<Integer, List<String[]>> map = new HashMap<Integer,   
  83.             // List<String[]>>();   
  84.             for (int j = 0; j < lineStr.size(); j++) {   
  85.                 String[] arr = lineStr.get(j).split(“ ”);   
  86.                 lineArr.add(arr);   
  87.             }   
  88.             // 计数   
  89.             for (int i = 0; i < lineArr.size(); i++) {   
  90.                 for (int j = 0; j < lineArr.get(i).length; j++) {   
  91.                     if (lineArr.get(i)[j].equals(word)) {   
  92.                         count++;   
  93.                     }   
  94.   
  95.                 }   
  96.             }   
  97.             return count;   
  98.   
  99.         } catch (FileNotFoundException e) {   
  100.             // TODO Auto-generated catch block   
  101.             e.printStackTrace();   
  102.             System.out.println(“您还未打开文件”);   
  103.         } catch (UnsupportedEncodingException e) {   
  104.             // TODO Auto-generated catch block   
  105.             e.printStackTrace();   
  106.         } catch (IOException e) {   
  107.             e.printStackTrace();   
  108.         }   
  109.         return count;   
  110.     }   
  111.   
  112.     private static boolean position(String word) {   
  113.         // TODO Auto-generated method stub   
  114.         boolean flag = false;   
  115.         try {   
  116.             FileInputStream fis = new FileInputStream(file);   
  117.             InputStreamReader isr = new InputStreamReader(fis, “gbk”);   
  118.             BufferedReader in = new BufferedReader(isr);   
  119.             // 读取每一行   
  120.             List<String> lineStr = new ArrayList<String>();   
  121.             String str;   
  122.             for (int i = 0; (str = in.readLine()) != null; i++) {   
  123.                 lineStr.add(str);   
  124.   
  125.             }   
  126.             // 把每一行拆分为数组,存为ArrayList<String[]>类型   
  127.             List<String[]> lineArr = new ArrayList<String[]>();   
  128.             // Map<Integer, List<String[]>> map = new HashMap<Integer,   
  129.             // List<String[]>>();   
  130.             for (int j = 0; j < lineStr.size(); j++) {   
  131.                 String[] arr = lineStr.get(j).split(“ ”);   
  132.                 lineArr.add(arr);   
  133.             }   
  134.             // 计数   
  135.             for (int i = 0; i < lineArr.size(); i++) {   
  136.                 for (int j = 0; j < lineArr.get(i).length; j++) {   
  137.                     if (lineArr.get(i)[j].equals(word)) {   
  138.                         System.out.println(word + “在第” + (i + 1) + “行,第”  
  139.                                 + (j + 1) + “列”);   
  140.                         flag = true;   
  141.                     }   
  142.   
  143.                 }   
  144.             }   
  145.   
  146.         } catch (FileNotFoundException e) {   
  147.             // TODO Auto-generated catch block   
  148.             e.printStackTrace();   
  149.             System.out.println(“您还未打开文件”);   
  150.         } catch (UnsupportedEncodingException e) {   
  151.             // TODO Auto-generated catch block   
  152.             e.printStackTrace();   
  153.         } catch (IOException e) {   
  154.             e.printStackTrace();   
  155.         }   
  156.         return flag;   
  157.     }   
  158.   
  159.     private static void createFile() {   
  160.         // TODO Auto-generated method stub   
  161.         System.out.println(“请输入文件名”);   
  162.         Scanner scanner = new Scanner(System.in);   
  163.         String fileName = scanner.nextLine().trim();   
  164.         file = new File(fileName);   
  165.         System.out.println(“打开成功”);   
  166.     }   
  167.   
  168. }   

无觅相关文章插件,快速提升流量

目前有 1 条留言 其中:访客:1 条, 博主:0 条

  1. 岁岁 : 2011年12月23日下午 3:46 回复

    hello~拿福能又有新活动喽~“掌中智通”博客大赛和“新语心愿”博客大赛都有奖金的,满100就可以提现咯,特此来通知博主一声~可以到官网查看详情哦~感谢你对拿福能的支持:)
    PS:已有新广告投放 欢迎打开广告位哦

给我留言

留言无头像?


使用腾讯微博登陆

使用新浪微博登陆

最活跃的读者

Klamiory(留下1个脚印)

订阅本站

分类目录

广而告知

最新评论

网站统计

    日志总数:41篇
    评论总数:594条
    分类总数:7个
    标签总数:374个
    友情链接:3个
    网站运行:1697天
最后更新:2011年12月25日