zoukankan      html  css  js  c++  java
  • 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);
        }
    }        

    记得点赞+关注!

    爱我没结果!
  • 相关阅读:
    【2020-07-04】人生十三信条
    【2020-07-03】人生十三信条
    【2020-07-02】人生十三信条
    【2020-07-01】人生十三信条
    【一句日历】2020年7月
    团队第三次作业评分 需求规格说明书
    软工评分工具
    中期成绩汇总
    软件工程第四次作业评分
    软件工程第五次作业评分
  • 原文地址:https://www.cnblogs.com/angoli/p/12879036.html
Copyright © 2011-2022 走看看