这几天刚刚做了个小程序,文本文件单词的检索与计数,分享给大家。
要求编程建立一个文本文件,每个单词不包含空格且不跨行,单词由字符序列构成且区分大小写;统计给定单词在文本文件中出现的总次数;检索输出某个单词出现在文本中的行号、在该行中出现的次数以及位置。该设计要求可分为三个部分实现:其一,建立文本文件,文件名由用户用键盘输入;其二,给定单词的计数,输入一个不含空格的单词,统计输出该单词在文本中的出现次数;其三,检索给定单词,输入一个单词,检索并输出该单词所在的行号、该行中出现的次数以及在该行中的相应位置。
(1)打开文本文件
(2)给定单词的计数
(3)检索单词出现在文本文件中的行号、次数及其位置
(4)主控菜单程序的结构
- package charCount;
- import java.io.BufferedReader;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileNotFoundException;
- import java.io.FileWriter;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.io.UnsupportedEncodingException;
- import java.text.DecimalFormat;
- import java.util.ArrayList;
- import java.util.Collections;
- import java.util.Comparator;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import java.util.Scanner;
- import java.util.Map.Entry;
- /** 统计小说的字符 */
- public class CharCountDemo {
- static File file;
- public static void main(String[] args) throws IOException {
- Scanner scanner = new Scanner(System.in);
- while (true) {
- System.out.println(“文本文件单词的检索与计数,作者左上上,copyright zuoshangs\n请选择菜单”);
- System.out.println(“1:打开文件”);
- System.out.println(“2:单词定位”);
- System.out.println(“3:单词计数”);
- System.out.println(“4:退出程序”);
- System.out.println(“请选择”);
- String choice = scanner.nextLine().trim();
- if (choice.equals(“1″)) {
- // 打开文本文件
- createFile();
- } else if (choice.equals(“2″)) {
- // 单词定位
- System.out.println(“请输入定位的单词”);
- String word = scanner.nextLine().trim();
- boolean flag = position(word);
- if (!flag) {
- System.out.println(“未找到” + word);
- }
- } else if (choice.equals(“3″)) {
- // 单词计数
- System.out.println(“请输入要计数的单词”);
- String word = scanner.nextLine().trim();
- int count = count(word);
- System.out.println(word + “的数量为” + count);
- } else if (choice.equals(“4″)) {
- // 退出程序
- System.out.println(“程序即将关闭”);
- break;
- } else {
- System.out.println(“输入错误,请重新输入”);
- }
- }
- }
- private static int count(String word) {
- // TODO Auto-generated method stub
- int count = 0;
- try {
- FileInputStream fis = new FileInputStream(file);
- InputStreamReader isr = new InputStreamReader(fis, “gbk”);
- BufferedReader in = new BufferedReader(isr);
- // 读取每一行
- List<String> lineStr = new ArrayList<String>();
- String str;
- for (int i = 0; (str = in.readLine()) != null; i++) {
- lineStr.add(str);
- }
- // 把每一行拆分为数组,存为ArrayList<String[]>类型
- List<String[]> lineArr = new ArrayList<String[]>();
- // Map<Integer, List<String[]>> map = new HashMap<Integer,
- // List<String[]>>();
- for (int j = 0; j < lineStr.size(); j++) {
- String[] arr = lineStr.get(j).split(“ ”);
- lineArr.add(arr);
- }
- // 计数
- for (int i = 0; i < lineArr.size(); i++) {
- for (int j = 0; j < lineArr.get(i).length; j++) {
- if (lineArr.get(i)[j].equals(word)) {
- count++;
- }
- }
- }
- return count;
- } catch (FileNotFoundException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- System.out.println(“您还未打开文件”);
- } catch (UnsupportedEncodingException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- return count;
- }
- private static boolean position(String word) {
- // TODO Auto-generated method stub
- boolean flag = false;
- try {
- FileInputStream fis = new FileInputStream(file);
- InputStreamReader isr = new InputStreamReader(fis, “gbk”);
- BufferedReader in = new BufferedReader(isr);
- // 读取每一行
- List<String> lineStr = new ArrayList<String>();
- String str;
- for (int i = 0; (str = in.readLine()) != null; i++) {
- lineStr.add(str);
- }
- // 把每一行拆分为数组,存为ArrayList<String[]>类型
- List<String[]> lineArr = new ArrayList<String[]>();
- // Map<Integer, List<String[]>> map = new HashMap<Integer,
- // List<String[]>>();
- for (int j = 0; j < lineStr.size(); j++) {
- String[] arr = lineStr.get(j).split(“ ”);
- lineArr.add(arr);
- }
- // 计数
- for (int i = 0; i < lineArr.size(); i++) {
- for (int j = 0; j < lineArr.get(i).length; j++) {
- if (lineArr.get(i)[j].equals(word)) {
- System.out.println(word + “在第” + (i + 1) + “行,第”
- + (j + 1) + “列”);
- flag = true;
- }
- }
- }
- } catch (FileNotFoundException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- System.out.println(“您还未打开文件”);
- } catch (UnsupportedEncodingException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- return flag;
- }
- private static void createFile() {
- // TODO Auto-generated method stub
- System.out.println(“请输入文件名”);
- Scanner scanner = new Scanner(System.in);
- String fileName = scanner.nextLine().trim();
- file = new File(fileName);
- System.out.println(“打开成功”);
- }
- }







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