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);
        }
    }        

    记得点赞+关注!

    爱我没结果!
  • 相关阅读:
    ADB命令大全
    Backup your Android without root or custom recovery -- adb backup
    Content portal for Pocketables Tasker articles
    Is there a way to detect if call is in progress? Phone Event
    Tasker to proximity screen off
    Tasker to detect application running in background
    Tasker to create toggle widget for ES ftp service -- Send Intent
    Tasker to proximity screen on
    Tasker to answer incoming call by pressing power button
    Tasker to stop Poweramp control for the headset while there is an incoming SMS
  • 原文地址:https://www.cnblogs.com/angoli/p/12879036.html
Copyright © 2011-2022 走看看