Java实验九第二题解析

题目解读,就是让你读取一个文本文件(.txt后缀)里的内容,将单词去重后升序显示(大小写肯定有区别的啊);注意文本文件还要通过从控制台输入文件的路径,我一般喜欢把txt文件放在E盘,所以用文件的绝对路径作为输入内容!基本上就是这么多步骤,下面带你逐步解析代码的实现!为了让你们阅读时充满精力,我都把字幕设成橙色,也是我最喜欢的颜色!

一、明确对象

当然不是指找对象了,这里主要是说哈,你在编程过程中需要用到哪些个Java对象,来帮助你实现目标要求。就这个题目而言,需要涉及集合相关的对象,因为题目中呢有这个“不重复”的字段,自然会想到集合啦,后面又说把单词升序显示,明显这又是TreeSet该干的事。接着对于文件的读取肯定会涉及File、InputStreamReader、BufferedReader和String等对象。

建议一套编程的模板:根据要求确定所需对象—根据逻辑顺序编写代码(先写啥后写啥,最后一看这都是啥,hiahiahia~)—测试代码的目标输出结果—优化代码(要么简洁、要么逻辑清晰有注释)。

 

二、具体代码解析,上代码!

Duang~

 

/**
* 导入必需的包
**/
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.Scanner;
import java.util.StringTokenizer;
import java.util.TreeSet;

/**
 * 按升序显示不重复的单词
 * @author AngoLi
 */
public class Exercise21_02 {
    // 我喜欢单独编写逻辑紧密的方法,在main中调用实现
    public static void main(String[] args){
        readTxt();
    }
    
    // 静态方法,读取文本并升序显示
    public static void readTxt(){
        // 用户从控制台输入绝对路径
        Scanner input = new Scanner(System.in);
        String path = input.next();
        // 用TreeSet构建排序的数据结构
        TreeSet<String> ts = new TreeSet<>();
        // 异常捕获,确保文件能被正常读取
        try{
            // 创建文件对象
            File myFile = new File(path);
            // 定义解码标准
            String encoding = "GBK";
            String lineinfo = "";
            // 文件存在执行以下操作
            if(myFile.isFile()&&myFile.exists()){
                InputStreamReader read = new InputStreamReader(new FileInputStream(myFile), encoding);
                BufferedReader bufferReader = new BufferedReader(read);
                // 逐行读取
                while((lineinfo = bufferReader.readLine())!=null){
                    // 以空格为分隔标志将一行文本切分成若干单词
                    StringTokenizer stk = new StringTokenizer(lineinfo, " ") ;
                    // 将每个单词传给TreeSet实例
                    while(stk.hasMoreTokens()){
                        ts.add(stk.nextToken());
                    }
                }
                // 关闭资源
                read.close();
            }
        }catch(Exception e){
            System.out.println("读取文件错误!");
            e.printStackTrace();
        }
        // 输出升序的单词集合
        System.out.println(ts);
    }
}        

 

 

 

记得点赞+关注!

 

posted @ 2020-05-12 21:44  AngoLi  阅读(222)  评论(0编辑  收藏  举报