java实现小说阅读器(功能:查看全文、统计总行数/总页码数、查找指定行、指定页码、实现翻页)
1.任务要求:
在DOS窗口下,实现查看全文、统计总行数/总页码数、查找指定行、指定页码、翻页
2.阅读器实现方式
输入1(查看全文、统计总行数/总页码数、)
输入2(读取指定行,查找其上下行)
输入+显示下一行,输入-显示上一行,输入bye返回上一级
输入3(查找指定页码,实现翻页功能)
输入+显示下一页,输入-显示上一页,输入bye返回上一级
3.具体代码如下
主要分为三个子程序,然后在主程序中分别进行调用,以此来实现小说阅读器的各功能。
import java.io.*;
import java.util.Scanner;
class Display_txt
{//查看全文(以每10个段落为一页,统计总行数)static void ReadAll (String fileName) throws IOException{BufferedReader br = new BufferedReader(new InputStreamReader (new FileInputStream (fileName)));//使用缓冲区的方法将数据读入到缓冲区中String str;int i=1;int a=0,b=1;while((str = br.readLine()) != null){System.out.println( "["+i+"]:" + str);System.out.println( );if(i==a+10) //分页(以每10个段落为一页){System.out.println("------------------------ page "+b+" ------------------------");a=a+10;b=b+1;}i=i+1;}System.out.println("------------------------ page "+b+" ------------------------\n");i=i-1;System.out.println("本文共有"+i +"行; 共有"+b+"页\n");}//查看指定页码,实现上下翻页static void getPage (String fileName) throws IOException{System.out.println("(提示:输入00返回上一级)");System.out.print("请输入查询页码:");Scanner sc=new Scanner(System.in);int pageNumber=sc.nextInt(); while(pageNumber!=00){ BufferedReader br = new BufferedReader(new InputStreamReader (new FileInputStream (fileName))); String line = br.readLine(); int num=0; int startNumber=(pageNumber-1)*10+1;int endNumber=pageNumber*10;while(line!= null){ if(startNumber==++num) { System.out.println("["+startNumber+"]:"+line);int i=startNumber;while(i<endNumber){i=i+1;line=br.readLine();System.out.println("["+i+"]:"+line); }System.out.println("-------------------page "+ pageNumber+"--------------------");System.out.println("(提示:输入+(下一页);输入-(上一页);输入bye(返回上一级);");System.out.print("请输入:"); Scanner sc1=new Scanner(System.in);String pageNumber1=sc1.next();int pn=pageNumber;while(!pageNumber1.equals("bye")){ if(pageNumber1.equals("+")){ BufferedReader br1 = new BufferedReader(new InputStreamReader (new FileInputStream (fileName)));String line1=br1.readLine();pn=pn+1;int num1=0;int startNumber1=(pn-1)*10+1,endNumber1=pn*10;while(line1!= null){if (startNumber1==++num1){System.out.println("["+startNumber1+"]:"+line1);int a=startNumber1;while(a<endNumber1){a=a+1;line1=br1.readLine();System.out.println("["+a+"]:"+line1);}System.out.println("-------------------page "+ pn+"--------------------");}line1=br1.readLine();}}if(pageNumber1.equals("-")){ BufferedReader br2 = new BufferedReader(new InputStreamReader (new FileInputStream (fileName)));String line2=br2.readLine();pn=pn-1;int num2=0;int startNumber2=(pn-1)*10+1,endNumber2=pn*10;while(line2!= null){if (startNumber2==++num2){System.out.println("["+startNumber2+"]:"+line2);int b=startNumber2;while(b<endNumber2){b=b+1;line2=br2.readLine();System.out.println("["+b+"]:"+line2);}System.out.println("-------------------page "+ pn+"--------------------");}line2=br2.readLine();}}else{}System.out.print("请输入:");pageNumber1=sc1.next(); }}line=br.readLine(); }System.out.println("(提示:输入00返回上一级)");System.out.print("请输入查询页码:");pageNumber=sc.nextInt();}System.out.println("返回到上一级"); }//读取指定行,并查看上下行static void readxxLine (String fileName) throws IOException{System.out.println("(提示:输入00返回上一级)");System.out.print("请输入查询行:");Scanner sc=new Scanner(System.in);int lineNumber=sc.nextInt(); while(lineNumber!=00){ BufferedReader br = new BufferedReader(new InputStreamReader (new FileInputStream (fileName)));//使用缓冲区的方法将数据读入到缓冲区中 String line = br.readLine(); int num=0; while(line!= null){ if(lineNumber==++num) { System.out.println("["+lineNumber+"]:"+line);System.out.println("提示:输入+(下一行);输入-(上一行);输入bye(返回上一级)");System.out.print("请输入:");Scanner sc1=new Scanner(System.in);String lineNumber1=sc1.next();int ln=lineNumber;while(!lineNumber1.equals("bye")){ if(lineNumber1.equals("+")){ BufferedReader br1 = new BufferedReader(new InputStreamReader (new FileInputStream (fileName)));String line1=br1.readLine();ln=ln+1;int num1=0;while(line1!= null){if (ln==++num1){System.out.println("["+ln+"]:"+line1);}line1=br1.readLine();}}if(lineNumber1.equals("-")){ BufferedReader br2 = new BufferedReader(new InputStreamReader (new FileInputStream (fileName)));String line2=br2.readLine();ln=ln-1;int num2=0;while(line2!= null){if (ln==++num2){System.out.println("["+ln+"]:"+line2);}line2=br2.readLine();}}else{}lineNumber1=sc1.next(); }}line=br.readLine(); }System.out.println("(提示:输入00返回上一级)");System.out.print("请输入查询行:");lineNumber=sc.nextInt();}System.out.println("返回上一级"); }//主程序public static void main(String[] args) throws IOException{String fileName ="E:/java task/cookie reader/哲学家都干了些什么.txt";System.out.println("提示:输入1(查看全文,统计全文总行数和总页码数);输入2(读取指定行,并查看上下行);输入3(查看指定页码的内容,上下翻页);");while(true){System.out.print("请输入:");Scanner sc=new Scanner(System.in);int j=sc.nextInt(); if(j==1){ ReadAll(fileName);j=0;}if(j==2){ readxxLine(fileName);j=0;}if(j==3){ getPage(fileName);j=0;}if(j==0){}else{ System.out.println("输入错误");}System.out.println("提示:输入1(查看全文,统计全文总行数和总页码数);输入2(读取指定行,并查看上下行);输入3(查看指定页码的内容,上下翻页);");}}
}
java实现小说阅读器(功能:查看全文、统计总行数/总页码数、查找指定行、指定页码、实现翻页)相关推荐
- 套路继续, .txt 小说阅读器功能开发
1, 解决一个 bug 正文结尾 (最后一行最后一个字)跟右边界, 有多余的空白间隔 Core Text 的渲染流程,就是富文本绘制 从流程上看, 感觉这一页的文字分配少了,给他加点字,就满了 // ...
- 阅读java源代码的阅读器_TXT小说阅读器java代码
[实例简介] 自己编写的txt小说阅读器,通过了测试,可以实现登录.注册.小说阅读.小说下载.在线阅读.上传小说等,供大家参考 [实例截图] [核心代码] 第一单元项目修改 └── 第一单元项目+修改 ...
- java实现极简单的 TXT小说阅读器(第二版)
第二版在第一版的基础上增加了 对文字大小.样式.名字的改变功能. WordStyleSet类: public class WordStyleSet {public static void StyleS ...
- 北大青鸟java第一单元项目_北大青鸟java第一单元项目迷你TXT小说阅读器
[实例简介] 自用 已通过老师检测 得分88分 北大青鸟java第一单元项目迷你TXT小说阅读器,可以作为java se学习项目也可以作为其他项目,项目完整可直接运行 [实例截图] [核心代码] TX ...
- android小说阅读器智能断章功能的实现
前言 [转载请注明出处]:http://blog.csdn.net/ProgramChangesWorld/article/details/47209475 不知道自己突然发什么神经,有想写一个小 ...
- 小说阅读器 免费源码 高颜值 功能齐全
最近自己做了个小说阅读器,就是下面这个东西啦,目前仅支持Window系统 软件的特点: 导入本地txt书籍,自动提取目录: 记录阅读进度,下次打开自动跳转至上次离开位置: 支持书籍分组管理,可以自己创 ...
- java实现极简单的 TXT小说阅读器(第三版)
第三版在第二版的基础上增加了 保存 以及另存为的选项. 并且完善了简单的菜单栏. SaveAndSaveAs类: public class SaveAndSaveAs { public SaveAnd ...
- java实现极简单的 TXT小说阅读器
public class Display_txt extends JFrame { JFrame jframe = new JFrame(); JTextArea content; boolean f ...
- 多功能英文小说阅读器
上篇说到的英文小说阅读器,模拟国外小开本小说.用其它的浏览器很难找到合适的字体,就像我们平常浏览网页时,字体虽清晰但总觉得不够漂亮. 用苹果浏览器不但美观(显示出来的字体和小说中几乎一模一样),而且还 ...
最新文章
- 元组Tuple、数组Array、映射Map
- Xamarin.Forms支持的地图显示类型
- same things betewen university and companies
- 用贪婪算法解决背包问题_解决主要算法问题的贪婪策略
- 我为什么不无偿加班,你也不应该
- 太卷了,这篇 CPU Cache,估计没人看
- 基于SSM流浪宠物管理系统
- 3dmax安全工具3ds Max Scene Security Tools
- 具有深度沉浸能力的人更能有所成就
- 对 ESX/ESXi 上的网络和 TCP/UDP 端口连接问题进行故障排除 (2020669)
- 简单易用的APIv3版微信支付SDK
- 内核tty框架_串口_tty_shell的关系
- 很有意思的几个考验知识广度的问题
- 笔记本HDMI1.4 1080p下外接高刷显示器的实现方法之一
- B站2020跨年晚会,被弹幕刷屏的节目是哪个,发弹幕最多的人又是谁?
- 【机器学习基础】线性基函数模型
- Python3 通过 suds 访问 webservice
- JDO是什么意思?JDO使用实例
- UE4导入人物模型后,材质没有对应的材质插槽,导致材质贴图混乱,的解决办法
- linux一台主机部署多版本mysql_Linux---一台主机部署多版本mysql服务和mysql实例
热门文章
- 如何为Web3.0世界启动完美的DAO
- 重启c语言-查验身份证
- Magic Leap开发指南(9)-- 6 DOF(Unity)
- 解决kubelet报错:kubelet.go:2183] node “k8s-20-52“ not found
- Numerical Optimization Ch10. Least-Squares Problems
- Excel发货单计算器,实现新增行后,新增行自动求和和列自动汇总求和
- C++学生信息管理系统(含文件流)部分心得含源码
- 【教程】超详细通过Shizuku转生微信集成WeXposed实现防撤回与红包
- 从零开始做远控 簡介篇 做一个属于你自己的远控
- Goroutine并发调度模型深度解析之手撸一个协程池