《2022年《Java面向对象程序设计》实验-实验八.pdf》由会员分享,可在线阅读,更多相关《2022年《Java面向对象程序设计》实验-实验八.pdf(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Java 面向对象程序设计实验- 实验八 ( 输入输出流 ) 广西科技大学计通学院Java 面向对象程序设计实验实验八输入输出流学生姓名 :学号:班级:指导老师 :专业:计算机科学与技术提交日期 : 年月日实验报告内容1实验目的掌握字符输入、输出流用法; 掌握使用 Scanner 类解析文件 ; 掌握 Console 流的使用。2实验内容实验教材 - 第 12 章实验 1、2、3 字符输入输出流 ;Scanner 类与 Console 类。要求: 完善程序 , 给出实验结果截图; 完成试验后练习。3程序代码及运行结果: 实验 1 举重成绩单/ AnalysisResult、java impor
2、t java、io 、*; import java、util、*; 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 1 页,共 13 页 - - - - - - - - - - Java 面向对象程序设计实验- 实验八 ( 输入输出流 ) public class AnalysisResult public static void main(String args) File(score、txt); File(scoreAnalysis、txt); try Writer out=new (fWrite);
3、 BufferedWriter bufferWrite=new BufferedWriter(out); Reader in=new (fRead); BufferedReader bufferRead=new BufferedReader(in); String str=null; while(str=bufferRead、readLine()!=null) double totalScore=Fenxi、getTotalScore(str); str=str+总成绩 :+totalScore; System、out 、println(str); bufferWrite、write(str)
4、; bufferWrite、newLine(); bufferRead、close(); bufferWrite、close(); catch(IOException e) System、out 、println(e、toString(); / Fenxi 、javaimport java、util、*; 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 2 页,共 13 页 - - - - - - - - - - Java 面向对象程序设计实验- 实验八 ( 输入输出流 ) public class Fe
5、nxi public static double getTotalScore(String s) String regex = 0123456789、; String digitMess = s、replaceAll(regex,*); StringTokenizer fenxi = new StringTokenizer(digitMess,*); double totalScore=0; while(fenxi、hasMoreTokens() double score=Double、parseDouble(fenxi、nextToken(); totalScore=totalScore+s
6、core; return totalScore; / score 、txt姓名: 张三, 抓举成绩 106kg, 挺举 189kg 。姓名: 李四, 抓举成绩 108kg, 挺举 186kg 。姓名: 周五, 抓举成绩 112kg, 挺举 190kg 。运行结果如图1 所示图 1 实验 2 统计英文单词/ WordStatistic、javaimport java、io 、*; import java、util、*; public class WordStatistic Vector allWord,noSameWord; File(english、txt); 精品资料 - - - 欢迎下载
7、- - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 3 页,共 13 页 - - - - - - - - - - Java 面向对象程序设计实验- 实验八 ( 输入输出流 ) Scanner sc=null; String regex; WordStatistic () allWord=new Vector(); noSameWord=new Vector(); regex=sdpPunct+;/正则表达式 try sc=new Scanner(file); sc、useDelimiter(regex); catch(IOException
8、 exp) System、out 、println(exp、toString(); void set(String name) ); try sc=new Scanner(file); sc、useDelimiter(regex); catch(IOException exp) System、out 、println(exp、toString(); void WordStatistic() try while(sc、hasNext() String word=sc、next(); allWord、add(word); if(!noSameWord、contains(word) noSameWo
9、rd、add(word); 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 4 页,共 13 页 - - - - - - - - - - Java 面向对象程序设计实验- 实验八 ( 输入输出流 ) catch(Exception e) public VectorgetAllWord() return allWord; public VectorgetNoSameWord() return noSameWord; / OutputWordMess、javaimport java、util、*; publi
10、c class OutputWordMess public static void main(String args) Vector allWord,noSameWord; WordStatistic statistic=new WordStatistic(); statistic、set(hello、txt); statistic、WordStatistic(); allWord=statistic、getAllWord(); noSameWord=statistic、getNoSameWord(); System、out 、println(共有+allWord 、size()+个英文单词
11、); System、out 、println(有+noSameWord 、size()+个互不相同英文单词); System、out 、println(按出现的频率排列 :); int count=new intnoSameWord、size(); for(int i=0;inoSameWord、size();i+) String s1=noSameWord、elementAt(i); for(int j=0;jallWord、size();j+) 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 5 页,
12、共 13 页 - - - - - - - - - - Java 面向对象程序设计实验- 实验八 ( 输入输出流 ) String s2=allWord、elementAt(j); if(s1、equals(s2) counti+; for(int m=0;mnoSameWord、size();m+) for(int n=m+1;ncountm) String temp=noSameWord、elementAt(m); noSameWord、setElementAt(noSameWord 、elementAt(n), m); noSameWord、setElementAt(temp, n); i
13、nt t=countm; countm=countn; countn=t; for(int m=0;mnoSameWord、size();m+) double frequency=(1、0*countm)/allWord、size(); System、out 、printf(%s:%-7、3f, noSameWord 、elementAt(m),frequency); 运行结果如图2 所示精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 6 页,共 13 页 - - - - - - - - - - Java
14、 面向对象程序设计实验- 实验八 ( 输入输出流 ) 图 2 实验 3 密码流/ PassWord、javaimport java、io 、*; public class PassWord public static void main(String args) boolean success=false; int count=0; Console cons; char passwd; cons=System、console(); while(true) System、out 、print(输入密码 :); passwd=cons、readPassword(); count+; String
15、password= new String(passwd); if(password、equals(tiger123) success=true; System、out 、println(您第+count+ 次输入的密码正确! ); break; else System、out 、println(您第+count+ 次输入的密码 +password+ 不正确! ); if(count=3) System、out 、println(您+count+ 次输入的密码都不正确! ); System、exit(0); if(success) 精品资料 - - - 欢迎下载 - - - - - - - -
16、- - - 欢迎下载 名师归纳 - - - - - - - - - -第 7 页,共 13 页 - - - - - - - - - - Java 面向对象程序设计实验- 实验八 ( 输入输出流 ) File(score1、txt); try inOne=new (file); BufferedReader inTow=new BufferedReader(inOne); String s=null; while(s=inTow、readLine()!=null) System、out 、println(s); inOne、close(); inTow、close(); catch(IOExce
17、ption ioe) / score 、txt姓名: 张三, 抓举成绩 106kg, 挺举 189kg 。姓名: 李四, 抓举成绩 108kg, 挺举 186kg 。姓名: 周五, 抓举成绩 112kg, 挺举 190kg 。运行结果如图3 所示图 3 4实验后的练习 : 实验 1有如下格式的成绩单( 文本格式 )score 、txt 。姓名: 张三, 数学 72 分, 物理 67 分, 英语 70 分。姓名: 李四, 数学 92 分, 物理 98 分, 英语 88 分。姓名: 周五, 数学 68 分, 物理 80 分, 英语 77 分。要求按行读入取成绩单, 并在该行的后面尾加上该同学的精品
18、资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 8 页,共 13 页 - - - - - - - - - - Java 面向对象程序设计实验- 实验八 ( 输入输出流 ) 总成绩 , 然后再将该行写入到一个名字为scoreAnalysis、txt的文件中。/ AnalysisResult、javaimport java、io 、*; import java、util、*; public class AnalysisResult public static void main(String args) File
19、(score、txt); File(scoreAnalysis、txt); try Writer out=new (fWrite,true); BufferedWriter bufferWrite=new BufferedWriter(out); Reader in=new (fRead); BufferedReader bufferRead=new BufferedReader(in); String str=null; while(str=bufferRead、readLine()!=null) double totalScore=Fenxi、getTotalScore(str); str
20、=str+总分:+totalScore; System、out 、println(str); bufferWrite、write(str); bufferWrite、newLine(); bufferRead、close(); bufferWrite、close(); catch(IOException e) System、out 、println(e、toString(); 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 9 页,共 13 页 - - - - - - - - - - Java 面向对象程
21、序设计实验- 实验八 ( 输入输出流 ) / Fenxi 、javaimport java、util、*; public class Fenxi public static double getTotalScore(String s) Scanner scanner=new Scanner(s); scanner、useDelimiter(0123456789、+); double totalScore=0; while(scanner、hasNext() try double score=scanner 、 nextDouble(); totalScore=totalScore+score;
22、 catch(InputMismatchException exp) String t=scanner、next(); return totalScore; / score 、txt 姓名: 张三, 数学 72 分, 物理 67 分, 英语 70 分。姓名: 李四, 数学 92 分, 物理 98 分, 英语 88 分。姓名: 周五, 数学 68 分, 物理 80 分, 英语 77 分。运行结果如图4 所示图 4 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 10 页,共 13 页 - - - - - -
23、 - - - - Java 面向对象程序设计实验- 实验八 ( 输入输出流 ) 实验 2 按字典序输出全部不相同的单词。/ Dictionary、javaimport java、util、*; public class Dictionary public static void main(String args) Vector allWord,noSameWord; WordStatistic statistic=new WordStatistic(); statistic、set(hello、txt); statistic、WordStatistic();/statistic调用WordSt
24、atistic()方法allWord=statistic、getAllWord(); noSameWord=statistic、getNoSameWord(); System、out 、println(共有+allWord 、size()+个英文单词 ); System、out 、 println(有+noSameWord 、 size()+个互不相同英文单词); System、out 、println(按字典顺序排列 :); String s=new String noSameWord、size(); for(int i=0;inoSameWord、size();i+) si=noSameW
25、ord 、elementAt(i); Arrays 、sort(s); for(int i=0;inoSameWord、size();i+) System、out 、println(si+ ); 运行结果如图5 所示精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 11 页,共 13 页 - - - - - - - - - - Java 面向对象程序设计实验- 实验八 ( 输入输出流 ) 图 5 实验 3 编 写 一 个程 序 , 程 序 运 行 时, 要求 用 户 输 入的 密码 就是:hello。如果用
26、户输入了正确的密码。程序将输出“您好, 欢迎您! ” 。程序允许用户2 次输入的密码不正确, 一旦超过 2 次, 程序将立刻退出。/ PassWord、javaimport java、io 、*; import java、util、Scanner; public class PassWord public static void main(String args) int count=0; Console cons; String passwd; Scanner sc=new Scanner(System、in);/cons=System、console(); while(true) Syst
27、em、out 、print(输入密码 :); passwd=sc、next();/ count+; String password=new String (passwd); if(password、equals(hello) System、out 、println(您好, 欢迎您! ); break; else System、out 、println(您第 +count+ 次输入的密 +password+ 不正确 ); if(count=3) System、out 、println(您+count+ 次输精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师
28、归纳 - - - - - - - - - -第 12 页,共 13 页 - - - - - - - - - - Java 面向对象程序设计实验- 实验八 ( 输入输出流 ) 入的密码都不正确 ); System、exit(0); 运行结果如图6 所示图 6 5实验心得与体会这次实验中 , 我感觉比较难理解与掌握的就就是Console类了, 在实验 3 密码流的代码在eclipse中运行出错如下图所示: 就就是输入不了密码, 后来通过找寻解决方法, 才知道了在JDK 6 中 java 、io 、Console 类专用来访问基于字符的控制台设备, 然后使用 cmd命令提示符来运行就可以输入密码与显示结果了。通过这次实验 , 大概了解了字符输入、输出流用法, 如何去使用 Scanner 类解析文件 , 对 Console 类的使用有个大概的认知。总而言之 , 这次实验收获蛮大的, 敲代码的效率比以往提高了 , 出错率也少了。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 13 页,共 13 页 - - - - - - - - - -