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实现小说阅读器(功能:查看全文、统计总行数/总页码数、查找指定行、指定页码、实现翻页)相关推荐

  1. 套路继续, .txt 小说阅读器功能开发

    1, 解决一个 bug 正文结尾 (最后一行最后一个字)跟右边界, 有多余的空白间隔 Core Text 的渲染流程,就是富文本绘制 从流程上看, 感觉这一页的文字分配少了,给他加点字,就满了 // ...

  2. 阅读java源代码的阅读器_TXT小说阅读器java代码

    [实例简介] 自己编写的txt小说阅读器,通过了测试,可以实现登录.注册.小说阅读.小说下载.在线阅读.上传小说等,供大家参考 [实例截图] [核心代码] 第一单元项目修改 └── 第一单元项目+修改 ...

  3. java实现极简单的 TXT小说阅读器(第二版)

    第二版在第一版的基础上增加了 对文字大小.样式.名字的改变功能. WordStyleSet类: public class WordStyleSet {public static void StyleS ...

  4. 北大青鸟java第一单元项目_北大青鸟java第一单元项目迷你TXT小说阅读器

    [实例简介] 自用 已通过老师检测 得分88分 北大青鸟java第一单元项目迷你TXT小说阅读器,可以作为java se学习项目也可以作为其他项目,项目完整可直接运行 [实例截图] [核心代码] TX ...

  5. android小说阅读器智能断章功能的实现

    前言 [转载请注明出处]:http://blog.csdn.net/ProgramChangesWorld/article/details/47209475   不知道自己突然发什么神经,有想写一个小 ...

  6. 小说阅读器 免费源码 高颜值 功能齐全

    最近自己做了个小说阅读器,就是下面这个东西啦,目前仅支持Window系统 软件的特点: 导入本地txt书籍,自动提取目录: 记录阅读进度,下次打开自动跳转至上次离开位置: 支持书籍分组管理,可以自己创 ...

  7. java实现极简单的 TXT小说阅读器(第三版)

    第三版在第二版的基础上增加了 保存 以及另存为的选项. 并且完善了简单的菜单栏. SaveAndSaveAs类: public class SaveAndSaveAs { public SaveAnd ...

  8. java实现极简单的 TXT小说阅读器

    public class Display_txt extends JFrame { JFrame jframe = new JFrame(); JTextArea content; boolean f ...

  9. 多功能英文小说阅读器

    上篇说到的英文小说阅读器,模拟国外小开本小说.用其它的浏览器很难找到合适的字体,就像我们平常浏览网页时,字体虽清晰但总觉得不够漂亮. 用苹果浏览器不但美观(显示出来的字体和小说中几乎一模一样),而且还 ...

最新文章

  1. 元组Tuple、数组Array、映射Map
  2. Xamarin.Forms支持的地图显示类型
  3. same things betewen university and companies
  4. 用贪婪算法解决背包问题_解决主要算法问题的贪婪策略
  5. 我为什么不无偿加班,你也不应该
  6. 太卷了,这篇 CPU Cache,估计没人看
  7. 基于SSM流浪宠物管理系统
  8. 3dmax安全工具3ds Max Scene Security Tools
  9. 具有深度沉浸能力的人更能有所成就
  10. 对 ESX/ESXi 上的网络和 TCP/UDP 端口连接问题进行故障排除 (2020669)
  11. 简单易用的APIv3版微信支付SDK
  12. 内核tty框架_串口_tty_shell的关系
  13. 很有意思的几个考验知识广度的问题
  14. 笔记本HDMI1.4 1080p下外接高刷显示器的实现方法之一
  15. B站2020跨年晚会,被弹幕刷屏的节目是哪个,发弹幕最多的人又是谁?
  16. 【机器学习基础】线性基函数模型
  17. Python3 通过 suds 访问 webservice
  18. JDO是什么意思?JDO使用实例
  19. UE4导入人物模型后,材质没有对应的材质插槽,导致材质贴图混乱,的解决办法
  20. linux一台主机部署多版本mysql_Linux---一台主机部署多版本mysql服务和mysql实例

热门文章

  1. 如何为Web3.0世界启动完美的DAO
  2. 重启c语言-查验身份证
  3. Magic Leap开发指南(9)-- 6 DOF(Unity)
  4. 解决kubelet报错:kubelet.go:2183] node “k8s-20-52“ not found
  5. Numerical Optimization Ch10. Least-Squares Problems
  6. Excel发货单计算器,实现新增行后,新增行自动求和和列自动汇总求和
  7. C++学生信息管理系统(含文件流)部分心得含源码
  8. 【教程】超详细通过Shizuku转生微信集成WeXposed实现防撤回与红包
  9. 从零开始做远控 簡介篇 做一个属于你自己的远控
  10. Goroutine并发调度模型深度解析之手撸一个协程池