




已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机科学与技术学院赵志崑zhaozk Java程序设计 Java程序的输入输出 以一个小应用为例 介绍Java的输入输出机制 小应用 需求分析需要实现的功能点Java中的实现方法具体代码总结与扩展 随机点名器 功能 设计开发一个Java程序 每节课可以随机抽取几名同学点名 达到随机点名的目的 数据来源 教务系统提供的学生名单 文本文件 随机选出10个学生 程序流程与要点 文本文件 屏幕打印 要点一 读文件 Java中文件以流 Stream 的方式读写 将程序的输入输出看作是数据的流动 一个流是一个字节的序列 流的使用不局限于文件读写 还可用于网络传输 键盘输入 屏幕输出等和程序输入输出有关的一切活动 根据用途 Java中提供了几十种流 类库中为每一种流提供一个类 用于创建流 对象 读文件流 用于读文本文件内容的流是FileReader 主要方法 FileReader Stringfilename 构造函数 创建流 intread 读一个字节 若读到文件结尾返回 1 voidclose 关闭流 FileReaderfr newFileReader Students txt intd fr read fr close FileReader 2 0 1 学生数据读入 从文件students txt中读入学生数据 Selector javaimportjava io publicclassSelector publicstaticvoidmain String args throwsException FileReaderfr newFileReader Students txt intc fr read while c 1 System out print char c c fr read fr close 说明 文件Students txt必须放在同一个目录下 必须在主函数声明处加入 throwsException 将异常全部交给虚拟机处理 按行读取 BufferedReader类能实现按行读取的功能 主要方法 BufferedReader Readerreader 构造函数 创建流 StringreadLine 读一行字符 若读到文件结尾返回null voidclose 关闭流 BufferedReader FileReader 字符 字符串 20080854101伦永涛2008计算机科学与技术1 BufferedReaderbr newBufferedReader fr Strings br readLine br close null 按行读取数据的代码 按行读取学生数据的代码如下 Selector javaimportjava io publicclassSelector publicstaticvoidmain String args throwsException FileReaderfr newFileReader Students txt BufferedReaderbr newBufferedReader fr Strings br readLine while s null System out println s s br readLine br close fr close BufferedReader FileReader 文件 流的嵌套 要点二 数据存放 从文件读入的数据是一个个字符串 如何在程序中存放 20080854101伦永涛 20080854102王楚尧 20080854103李燕 用数组来保存批量数据 创建一个字符串数组 将读入的数据依次放入 用一个整数型变量记录数据个数 并作为空闲位置的指针 String students newString 100 intcount 0 students count s count 1 2 3 数据存放的代码 加入数据存放后的代码如下 Selector javaimportjava io publicclassSelector publicstaticvoidmain String args throwsException String students newString 100 intcount 0 FileReaderfr newFileReader Students txt BufferedReaderbr newBufferedReader fr Strings br readLine while s null students count s count s br readLine br close fr close 要点三 随机选取 学生信息存放在数组中 对应下标为0到count 1 如何从中随机选出1个 产生一个0到count 1的随机整数 Java提供Random类来创建随机数对象 方法包括 Random 构造函数 创建随机数对象 初始值为当前时间 nextInt intn 产生一个0到n之间的随机整数 要选出几个 就循环调用几次 Randomrand newRandom intn rand nextInt count Random的实现利用了混沌函数 Xn 1 f Xn Xn 1和Xn之间几乎没有任何规律 X0为对象创建时的系统时钟值 从1970年1月1日0时0分0秒到当前经过的毫秒数 避免重复选择 避免重复选择 将选中过的学生数据从数组中删除 20080854101伦永涛 20080854102王楚尧 20080854103李燕 0 1 2 3 4 98 99 students 79 count 20080854104董风华 20080854105李晶 77 78 79 20080854239秦露 20080854240王萍 用最后一名学生替换选中的学生 总数量减1 students n students count 1 count 78 要点四 结果存入文件 将选中学生的名单保存到文件selected txt中 向文件中写入字符用的流是FileWriter 相关方法是 FileWriter Stringfilename 构造函数 创建文件输出流 write Strings intstart intend 将字符串s中第start个字符到第end个字符写入文件 close 关闭流 保证文件内容写入磁盘 FileWriterfw newFileWriter Selected txt fw write line 0 line length fw close 要换行 只需要写入一个 r n 字符串 20080854219徐飞飞2008计算机科学与技术2 20080854201张慧丽2008计算机科学与技术2 写文件的代码 将结果写入文件的代码如下 Randomrand newRandom intselectCount 10 FileWriterfw newFileWriter Selected txt for inti 0 i selectCount i intn rand nextInt count Stringline students n System out println line line r n fw write line 0 line length students n students count 1 count fw close Java中的流 Java中提供了几十种流 本例中用到了三个 FileReaderBufferedReaderFileWriter 所有流都派生自四个最基本的流 Reader WriterInputStream OutputStream 总结与说明 文本文件 屏幕打印 改进1自动生成文件名 改进2配置选出个数 改进3分切数据字段 改进1 自动生成文件名 问题 生成的文件名始终为selected txt 后一次生成的结果会覆盖掉前一次的结果 解决方法 为输出文件名编号 第一次结果为no1 txt 第二次为no2 txt 这样就不会覆盖了 文件编号规则为 如果不存在no1 txt文件 则结果为no1 txt 如果不存在no2 txt文件 则结果为no2 txt 自动生成文件名 自动生成文件名利用了File类其exists 方法可以判断文件是否存在 File类的对象可以直接用于创建FileWriter流 intno 0 Fileoutf do no outf newFile No no txt while outf exists FileWriterfout newFileWriter outf 改进2 配置选出人数 问题 每次固定选出10名学生 过于死板 如果某次想选出15名学生就需要改源程序 比较麻烦 解决方法 使用main函数的参数 即运行时 可以带参数 如javaselector15大多数情况下都选出10名 所以为方便起见 应该在不提供参数的情况下 默认为选出10名 main函数参数的使用 main函数的参数为字符串数组 String 第一个参数下标为0 publicstaticvoidmain String args throwsIOException intselectedCount 10 if args length 0 selectedCount Integer parseInt args 0 改进3 分切数据字段 问题 对输入的字符串没有进行分析 所以很多操作无法进行 如按姓名排序 按班级抽取等 解决方法 读入数据时 对各字段进行解析 各字段分别存放 输出时再将这些字段组合成字符串 Student类 为了保存格式化的数据定义Student类 classStudent privateStringid 学号privateStringname 姓名privateStringdepartment 学院publicvoidparseStudent Stringstr 字符串解析publicStringtoString 生成字符串 数据保存在Student类型的对象数组中 Student students newStudent 100 数据读入时格式化 Studentstudent newStudent student parseStudent line students count student count 数据输出 line students j toString 设计parseStudent方法 主要使用了字符串处理中的切词类StringTokenizer 该类提供的方法可以根据空格符将字符串分切成多个词 publicvoidparseStudent Stringstr inttokenCount StringTokenizert newStringTokenizer str tokenCount t countTokens id t nextToken 学号name t nextToken 姓名department t nextToken 班级 设计toString方法 主要输出三个字段 学号 姓名和班级 学号的长度都一致 姓名的长度不一致 有两个字有三个字 会对后面的班级字段的起始位置产生影响 因此 加入姓名后 采用了一条对齐语句 publicS
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 灯具安装合同范本博客
- 制造业路演题目及答案
- 护理部工作计划范文2025(5篇)
- 烟草行业技术规范与市场策略
- 劳动合同的注意事项
- 环境监测行业智能化转型2025年数据质量控制与智能化监测平台报告
- 2025年管理信息系统试卷及答案
- 2025年电工常识题库及答案
- 2025年餐饮消防培训题目及答案
- 2025年陕西省安康市事业单位工勤技能考试考试题库及参考答案
- 2023年中元节烧包袱禁忌 中元节烧包袱是单数还是双数(3篇)
- 幼儿文学课件完整版
- DB6101T3128-2022养老服务规范 助餐服务
- 临时用地复垦与方案
- 语言学纲要课件
- 地下室开槽引流方案
- 电子课件-《市场营销》-A45-2298完整版教学课件全书电子讲义(最新)
- 新苏教版科学六年级上册教学计划含进度表
- 2021年新苏教版科学六年级上册知识点整理
- 美的观念(玛丽艳)
- 农药学原理课件--作用机制研究的思路和方法
评论
0/150
提交评论