Java面向对象程序设计实验实验八输入输出流.docx

上传人:b****6 文档编号:6883946 上传时间:2023-01-12 格式:DOCX 页数:13 大小:61.50KB
下载 相关 举报
Java面向对象程序设计实验实验八输入输出流.docx_第1页
第1页 / 共13页
Java面向对象程序设计实验实验八输入输出流.docx_第2页
第2页 / 共13页
Java面向对象程序设计实验实验八输入输出流.docx_第3页
第3页 / 共13页
Java面向对象程序设计实验实验八输入输出流.docx_第4页
第4页 / 共13页
Java面向对象程序设计实验实验八输入输出流.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

Java面向对象程序设计实验实验八输入输出流.docx

《Java面向对象程序设计实验实验八输入输出流.docx》由会员分享,可在线阅读,更多相关《Java面向对象程序设计实验实验八输入输出流.docx(13页珍藏版)》请在冰豆网上搜索。

Java面向对象程序设计实验实验八输入输出流.docx

Java面向对象程序设计实验实验八输入输出流

广西科技大学

计通学院

《Java面向对象程序设计》实验

实验八输入输出流

 

学生:

×××

学号:

×××

班级:

×××

指导老师:

×××

专业:

计算机科学与技术

 

提交日期:

×××年××月××日

 

实验报告容

1.实验目的

掌握字符输入、输出流用法;

掌握使用Scanner类解析文件;

掌握Console流的使用。

2.实验容

实验教材-第12章实验1、2、3

字符输入输出流;Scanner类和Console类。

要求:

完善程序,给出实验结果截图;

完成试验后练习。

3.程序代码及运行结果:

实验1举重成绩单

//AnalysisResult.java

importjava.io.*;

importjava.util.*;

publicclassAnalysisResult{

publicstaticvoidmain(String[]args){

FilefRead=newFile("score.txt");

FilefWrite=newFile("scoreAnalysis.txt");

try{

Writerout=newFileWriter(fWrite);

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.java

importjava.util.*;

publicclassFenxi{

publicstaticdoublegetTotalScore(Strings){

Stringregex="[^0123456789.]";

StringdigitMess=s.replaceAll(regex,"*");

StringTokenizerfenxi=newStringTokenizer(digitMess,"*");

doubletotalScore=0;

while(fenxi.hasMoreTokens()){

doublescore=Double.parseDouble(fenxi.nextToken());

totalScore=totalScore+score;

}

returntotalScore;

}

}

//score.txt

三,抓举成绩106kg,挺举189kg。

四,抓举成绩108kg,挺举186kg。

周五,抓举成绩112kg,挺举190kg。

运行结果如图1所示

图1

 

实验2统计英文单词

//WordStatistic.java

importjava.io.*;

importjava.util.*;

publicclassWordStatistic{

VectorallWord,noSameWord;

Filefile=newFile("english.txt");

Scannersc=null;

Stringregex;

WordStatistic(){

allWord=newVector();

noSameWord=newVector();

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());

}

}

voidWordStatistic(){

try{

while(sc.hasNext()){

Stringword=sc.next();

allWord.add(word);

if(!

noSameWord.contains(word))

noSameWord.add(word);

}

}

catch(Exceptione){}

}

publicVectorgetAllWord(){

returnallWord;

}

publicVectorgetNoSameWord(){

returnnoSameWord;

}

}

//OutputWordMess.java

importjava.util.*;

publicclassOutputWordMess{

publicstaticvoidmain(String[]args){

VectorallWord,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;i

Strings1=noSameWord.elementAt(i);

for(intj=0;j

Strings2=allWord.elementAt(j);

if(s1.equals(s2))

count[i]++;

}

}

for(intm=0;m

for(intn=m+1;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;m

doublefrequency=(1.0*count[m])/allWord.size();

System.out.printf("%s:

%-7.3f",noSameWord.elementAt(m),frequency);

}

}

}

运行结果如图2所示

图2

 

实验3密码流

//PassWord.java

importjava.io.*;

publicclassPassWord{

publicstaticvoidmain(String[]args){

booleansuccess=false;

intcount=0;

Consolecons;

char[]passwd;

cons=System.console();

while(true){

System.out.print("输入密码:

");

passwd=cons.readPassword();

count++;

Stringpassword=newString(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){

Filefile=newFile("score1.txt");

try{

FileReaderinOne=newFileReader(file);

BufferedReaderinTow=newBufferedReader(inOne);

Strings=null;

while((s=inTow.readLine())!

=null){

System.out.println(s);

}

inOne.close();

inTow.close();

}catch(IOExceptionioe){}

}

}

}

//score.txt

三,抓举成绩106kg,挺举189kg。

四,抓举成绩108kg,挺举186kg。

周五,抓举成绩112kg,挺举190kg。

运行结果如图3所示

图3

 

4.实验后的练习:

实验1

有如下格式的成绩单(文本格式)score.txt。

三,数学72分,物理67分,英语70分。

四,数学92分,物理98分,英语88分。

周五,数学68分,物理80分,英语77分。

要求按行读入取成绩单,并在该行的后面尾加上该同学的总成绩,然后再将该行写入到一个名字为scoreAnalysis.txt的文件中。

//AnalysisResult.java

importjava.io.*;

importjava.util.*;

publicclassAnalysisResult{

publicstaticvoidmain(String[]args){

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.java

importjava.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;

}

}

//score.txt

三,数学72分,物理67分,英语70分。

四,数学92分,物理98分,英语88分。

周五,数学68分,物理80分,英语77分。

运行结果如图4所示

图4

 

实验2

按字典序输出全部不相同的单词。

//Dictionary.java

importjava.util.*;

publicclassDictionary{

publicstaticvoidmain(Stringargs[]){

VectorallWord,noSameWord;

WordStatisticstatistic=newWordStatistic();

statistic.setFileName("hello.txt");

statistic.WordStatistic();//statistic调用WordStatistic()方法

allWord=statistic.getAllWord();

noSameWord=statistic.getNoSameWord();

System.out.println("共有"+allWord.size()+"个英文单词");

System.out.println("有"+noSameWord.size()+"个互不相同英文单词");

System.out.println("按字典顺序排列:

");

Strings[]=newString[noSameWord.size()];

for(inti=0;i

s[i]=noSameWord.elementAt(i);

}

Arrays.sort(s);

for(inti=0;i

System.out.println(s[i]+"");

}

}

}

运行结果如图5所示

图5

 

实验3

编写一个程序,程序运行时,要求用户输入的密码是:

hello。

如果用户输入了正确的密码。

程序将输出“你好,欢迎你!

”。

程序允许用户2次输入的密码不正确,一旦超过2次,程序将立刻退出。

//PassWord.java

importjava.io.*;

importjava.util.Scanner;

publicclassPassWord{

publicstaticvoidmain(Stringargs[]){

intcount=0;

Consolecons;

Stringpasswd;

Scannersc=newScanner(System.in);//cons=System.console();

while(true){

System.out.print("输入密码:

");

passwd=sc.next();//

count++;

Stringpassword=newString(passwd);

if(password.equals("hello")){

System.out.println("你好,欢迎你!

");

break;

}

else{

System.out.println("您第"+count+"次输入的密"+password+"不正确");

}

if(count==3){

System.out.println("您"+count+"次输入的密码都不正确");

System.exit(0);

}

}

}

}

运行结果如图6所示

图6

 

5.实验心得和体会

这次实验中,我感觉比较难理解和掌握的就是Console类了,在实验3密码流的代码在eclipse中运行出错如下图所示:

就是输入不了密码,后来通过找寻解决方法,才知道了在JDK6中java.io.Console类专用来访问基于字符的控制台设备,然后使用cmd命令提示符来运行就可以输入密码和显示结果了。

通过这次实验,大概了解了字符输入、输出流用法,如何去使用Scanner类解析文件,对Console类的使用有个大概的认知。

总而言之,这次实验收获蛮大的,敲代码的效率比以往提高了,出错率也少了。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 职业规划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1