《《Java面向对象程序设计》实验-实验八(输入输出流).doc》由会员分享,可在线阅读,更多相关《《Java面向对象程序设计》实验-实验八(输入输出流).doc(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、广西科技大学计通学院Java面向对象程序设计实验实验八 输入输出流 学生姓名: 学 号: 班 级: 指导老师: 专 业:计算机科学与技术提交日期:年 月日实验报告内容1 实验目的掌握字符输入、输出流用法;掌握使用Scanner类解析文件;掌握Console流的使用。2 实验内容实验教材-第12章实验1、2、3字符输入输出流;Scanner类和Console类。 要求: 完善程序,给出实验结果截图;完成试验后练习。3 程序代码及运行结果:实验1 举重成绩单/ AnalysisResult.javaimport java.io.*; import java.util.*;public class
2、AnalysisResult public static void main(String args) File fRead=new File(score.txt); File fWrite=new File(scoreAnalysis.txt); try Writer out=new FileWriter(fWrite); BufferedWriter bufferWrite=new BufferedWriter(out); Reader in=new FileReader(fRead); BufferedReader bufferRead=new BufferedReader(in); S
3、tring str=null; while(str=bufferRead.readLine()!=null) double totalScore=Fenxi.getTotalScore(str); str=str+总成绩:+totalScore; System.out.println(str); bufferWrite.write(str); bufferWrite.newLine(); bufferRead.close(); bufferWrite.close(); catch(IOException e) System.out.println(e.toString(); / Fenxi.j
4、avaimport java.util.*; public class Fenxi 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(fenx
5、i.nextToken(); totalScore=totalScore+score; 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 file=
6、new File(english.txt); Scanner sc=null; String regex; WordStatistic () allWord=new Vector(); noSameWord=new Vector(); regex=sdpPunct+;/正则表达式 try sc=new Scanner(file); sc.useDelimiter(regex); catch(IOException exp) System.out.println(exp.toString(); void setFileName(String name) file=new File(name);
7、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) noSameWord.add(word); catch(Exception e) public VectorgetAllWord() return al
8、lWord; public VectorgetNoSameWord() return noSameWord; / OutputWordMess.javaimport java.util.*;public class OutputWordMess public static void main(String args) Vector allWord,noSameWord; WordStatistic statistic=new WordStatistic(); statistic.setFileName(hello.txt); statistic.WordStatistic(); allWord
9、=statistic.getAllWord(); noSameWord=statistic.getNoSameWord(); System.out.println(共有+allWord.size()+个英文单词); 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(
10、int j=0;jallWord.size();j+) 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); int t=countm; countm=countn; cou
11、ntn=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所示图2实验3 密码流/ PassWord.javaimport java.io.*;public class PassWord public static void main(String args) boolean success=false;int count=0;Cons
12、ole cons;char passwd;cons=System.console();while(true)System.out.print(输入密码:);passwd=cons.readPassword(); count+;String password= new String(passwd);if(password.equals(tiger123)success=true;System.out.println(您第+count+次输入的密码正确!);break;elseSystem.out.println(您第+count+次输入的密码+password+不正确!);if(count=3)
13、System.out.println(您+count+次输入的密码都不正确!);System.exit(0);if(success)File file=new File(score1.txt);tryFileReader inOne=new FileReader(file);BufferedReader inTow=new BufferedReader(inOne);String s=null;while(s=inTow.readLine()!=null)System.out.println(s);inOne.close();inTow.close();catch(IOException io
14、e) / score.txt姓名:张三, 抓举成绩 106kg, 挺举 189kg。姓名:李四, 抓举成绩 108kg, 挺举 186kg。姓名:周五, 抓举成绩 112kg, 挺举 190kg。运行结果如图3所示图34 实验后的练习:实验1 有如下格式的成绩单(文本格式)score.txt。姓名:张三,数学72分,物理67分,英语70分。姓名:李四,数学92分,物理98分,英语88分。姓名:周五,数学68分,物理80分,英语77分。要求按行读入取成绩单,并在该行的后面尾加上该同学的总成绩,然后再将该行写入到一个名字为scoreAnalysis.txt的文件中。/ AnalysisResult
15、.javaimport java.io.*; import java.util.*;public class AnalysisResult public static void main(String args) File fRead=new File(score.txt); File fWrite=new File(scoreAnalysis.txt); try Writer out=new FileWriter(fWrite,true); BufferedWriter bufferWrite=new BufferedWriter(out); Reader in=new FileReader
16、(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); bufferWrite.newLine(); bufferRead.close(); bufferWrite.close(); catc
17、h(IOException e) System.out.println(e.toString(); / 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(); tot
18、alScore=totalScore+score; catch(InputMismatchException exp) String t=scanner.next(); return totalScore; / score.txt姓名:张三,数学72分,物理67分,英语70分。姓名:李四,数学92分,物理98分,英语88分。姓名:周五,数学68分,物理80分,英语77分。运行结果如图4所示图4实验2 按字典序输出全部不相同的单词。/ Dictionary.javaimport java.util.*;public class Dictionary public static void main
19、(String args)Vector allWord,noSameWord;WordStatistic statistic=new WordStatistic();statistic.setFileName(hello.txt);statistic.WordStatistic();/statistic调用WordStatistic()方法allWord=statistic.getAllWord();noSameWord=statistic.getNoSameWord();System.out.println(共有+allWord.size()+个英文单词);System.out.printl
20、n(有+noSameWord.size()+个互不相同英文单词);System.out.println(按字典顺序排列:);String s=new String noSameWord.size();for(int i=0;inoSameWord.size();i+)si=noSameWord.elementAt(i);Arrays.sort(s);for(int i=0;i ( )+; ;+ +) 0 ( ; ) . ;( +) ;= ( )( . +( . ; ( = ;列频出按 )同互+ . ;单个+ ; )( . ) ; ) ( *. = ) = 达 ( ; () ) ; ) ! ) ( ) ) +; + 出 ( ( ( (= ) ( (0 + + ( = ; ( ) ) ; ) :. 图 0 = ) : )+ ) )= 入 您入 确) +) () ( = ( .成举 ,举 成 习绩 ,分分 分 分分行同将名 . ; . = ) ; ) . ) . ) : ) ) ) ; ) ) 三 四,分物,所图词 调 . 有 ) 词. 排: ) = ) )图运输:。码你序输,出. ; ; (/ (密= /+ ; (迎 . 密 = +密正 ; 所体验难 在 示找道 访设 运和了输何 的有实的率出