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); } }
记得点赞+关注!
爱我没结果!