您好,欢迎访问三七文档
10.14.1实验1分析成绩单1.实验目的本实验的目的是让学生掌握字符输入、输出流以及缓冲输入、输出流用法。2.实验要求现在有如下格式的成绩单(文本格式)score.txt:姓名:张三,数学72分,物理67分,英语70分.姓名:李四,数学92分,物理98分,英语88分.姓名:周五,数学68分,物理80分,英语77分.要求按行读取成绩单,并在该行的末尾加上该同学的总成绩,然后再将该行写入到一个名字为scoreAnalysis.txt的文件中。4.实验指导因为要以尾加方式创建指向文件fWrite的out流,即不刷新文件scoreAnalysis.txt,因此代码1可以是newFileWriter(fWrite,true);实验一AnalysisResult.javaimportjava.io.*;importjava.util.*;publicclassAnalysisResult{publicstaticvoidmain(Stringargs[]){FilefRead=newFile(score.txt);FilefWrite=newFile(scoreAnalysis.txt);try{Writerout=newFileWriter(fWrite,true);BufferedWriterbufferWrite=newBufferedWriter(out);Readerin=newFileReader(fRead);BufferedReaderbufferRead=newBufferedReader(in);Stringstr=null;while((str=bufferRead.readLine())!=null){doubletotalScore=Fenxi.getTotalScore(str);str=str+总分:+totalScore;System.out.println(str);bufferWrite.write(str);bufferWrite.newLine();}bufferRead.close();bufferWrite.close();}catch(IOExceptione){System.out.println(e.toString());}}}Fenxi.javaimportjava.util.*;publicclassFenxi{publicstaticdoublegetTotalScore(Strings){Scannerscanner=newScanner(s);scanner.useDelimiter([^0123456789.]+);doubletotalScore=0;while(scanner.hasNext()){try{doublescore=scanner.nextDouble();totalScore=totalScore+score;}catch(InputMismatchExceptionexp){Stringt=scanner.next();}}returntotalScore;}}10.14.2实验2统计英文单词1.实验目的掌握使用Scanner类解析文件。2.实验要求使用Scanner类和正则表达式统计一篇英文中的单词,要求如下。(1)一共出现了多少个单词。(2)有多少个互不相同的单词。(3)按单词出现频率大小输出单词。4.实验指导Java.util包中的Vector类负责创建一个向量对象。如果已经学会使用数组,那么很容易就会使用向量。当我们创建一个向量时不用像数组那样必须要给出数组的大小。向量创建后,例如,VectorStringa=newVecterString();向量a可以使用add(stringo)把String对象添加到向量的末尾,向量的大小会自动增加;a可以使用elementAt(intindex)获取指定索引处的向量的元素(索引的初始位置是0);a可以使用方法size()获取向量所含有的元素的个数。实验二WordStatistic.javaimportjava.io.*;importjava.util.*;publicclassWordStatistic{VectorStringallWord,noSameWord;Filefile=newFile(english.txt);Scannersc=null;Stringregex;WordStatistic(){allWord=newVectorString();noSameWord=newVectorString();regex=[\\s\\d\\p{Punct}]+;try{sc=newScanner(file);sc.useDelimiter(regex);}catch(IOExceptionexp){System.out.println(exp.toString());}}voidsetFileName(Stringname){file=newFile(name);try{sc=newScanner(file);sc.useDelimiter(regex);}catch(IOExceptionexp){System.out.println(exp.toString());}}publicvoidwordStatistic(){try{while(sc.hasNext()){Stringword=sc.next();allWord.add(word);if(!noSameWord.contains(word))noSameWord.add(word);}}catch(Exceptione){System.out.println(e.toString());}}publicVectorStringgetAllWord(){returnallWord;}publicVectorStringgetNoSameWord(){returnnoSameWord;}}MainClass.javaimportjava.util.*;publicclassMainClass{publicstaticvoidmain(Stringargs[]){VectorStringallWord,noSameWord;WordStatisticstatistic=newWordStatistic();statistic.setFileName(hello.txt);statistic.wordStatistic();allWord=statistic.getAllWord();noSameWord=statistic.getNoSameWord();System.out.println(共有+allWord.size()+个英文单词);System.out.println(有+noSameWord.size()+个互不相同的英文单词);System.out.println(按出现频率排列:);intcount[]=newint[noSameWord.size()];for(inti=0;inoSameWord.size();i++){Strings1=noSameWord.elementAt(i);for(intj=0;jallWord.size();j++){Strings2=allWord.elementAt(j);if(s1.equals(s2))count[i]++;}}for(intm=0;mnoSameWord.size();m++){for(intn=m+1;nnoSameWord.size();n++){if(count[n]count[m]){Stringtemp=noSameWord.elementAt(m);noSameWord.setElementAt(noSameWord.elementAt(n),m);noSameWord.setElementAt(temp,n);intt=count[m];count[m]=count[n];count[n]=t;}}}for(intm=0;mnoSameWord.size();m++){doublefrequency=(1.0*count[m])/allWord.size();System.out.printf(%s:%-7.3f,noSameWord.elementAt(m),frequency);}}}
本文标题:33java
链接地址:https://www.777doc.com/doc-4987767 .html