北科大Java设计实验报告3Word格式文档下载.docx
《北科大Java设计实验报告3Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《北科大Java设计实验报告3Word格式文档下载.docx(21页珍藏版)》请在冰豆网上搜索。
i'
i+=1;
o'
o+=1;
u'
u+=1;
System.out.print(c1);
}
in.close();
System.out.println("
\na出现"
+a+"
次"
+
"
\ne出现"
+e+"
+
\ni出现"
+i+"
\no出现"
+o+"
\nu出现"
+u+"
);
}catch(IOExceptione1){
e1.printStackTrace();
}
}//endmethodmain
}//endclassStatisticLetter
运行结果截图:
2.编写一个程序,从命令行参数中获得文件名,读入该文件,统计该文件的行数。
注意处理各种可能出现的异常情况。
//ReadLineNumber.java
publicclassReadLineNumber{
Stringss;
intn=0;
in=newBufferedReader(newFileReader(args[0]));
ss=in.readLine();
while(ss!
=null){
n+=1;
文件"
+args[0]+"
共有"
+n+"
行"
);
}catch(ArrayIndexOutOfBoundsExceptione1){
System.out.println("
请输入文件名!
"
}catch(FileNotFoundExceptione2){
No"
+"
"
+args[0]);
}catch(IOExceptione3){
e3.printStackTrace();
}//endclassReadLineNumber
3.将两个文本文件的内容合并到另一个文本文件中。
//CombineText.java
publicclassCombineText{
try{
//创建新文件t1.txt
Filedir=newFile("
myDir"
if(!
dir.exists())
dir.mkdir();
FilemyFile=newFile(dir,"
t1.txt"
//将infile1.txt的内容读入到t1.txt
BufferedWriterbr1=newBufferedWriter(newFileWriter(myFile,true));
BufferedReaderin1=newBufferedReader(newFileReader("
infile1.txt"
Stringtemp1=in1.readLine();
while((temp1!
=null)&
&
(temp1!
="
)){
Stringtemp3=temp1+"
\n"
;
System.out.println(temp3);
br1.write(temp3);
temp1=in1.readLine();
br1.close();
in1.close();
//将infile2.txt的内容读入到t1.txt
BufferedWriterbr2=newBufferedWriter(newFileWriter(myFile,true));
BufferedReaderin2=newBufferedReader(newFileReader("
infile2.txt"
Stringtemp2=in2.readLine();
while((temp2!
(temp2!
Stringtemp4=temp2+"
System.out.println(temp4);
br2.write(temp4);
temp2=in2.readLine();
br2.close();
in2.close();
//合并成功输出反馈信息
Thenewfileiscreated!
}catch(IOExceptionioe){
System.err.println(ioe);
}//endclassCombineText
4.编写一个程序在程序所在目录下创建以下目录:
Root、Root\Branch1、Root\Branch2;
然后在Root\Branch1中创建两个空文件Leaf1.txt和Leaf2.txt。
请将目录和文件操作的相关信息保存在文本文件log.txt中。
//CreateBranch.java
publicclassCreateBranch{
BufferedWriterbr;
BufferedReaderfin;
//新建文件目录
Filedir1=newFile("
Root"
if(!
dir1.exists())
dir1.mkdir();
Filedir2=newFile("
Root\\Branch1"
dir2.mkdir();
Filedir3=newFile("
Root\\Branch2"
dir3.mkdir();
//新建文件
FilemyFile1=newFile(dir2,"
Leaf1.txt"
FilemyFile2=newFile(dir2,"
Leaf2.txt"
Stringtemp=dir1.getAbsolutePath()+"
+dir2.getAbsolutePath()+"
+dir3.getAbsolutePath()+"
+myFile1.getAbsolutePath()+"
+myFile2.getAbsolutePath()+"
myFile1.createNewFile();
//创建文件Leaf1.txt
myFile2.createNewFile();
//创建文件Leaf2.txt
Filef1=newFile("
log.txt"
//创建文件log.txt
//将文件信息输入到log.txt
BufferedWriterbr1=newBufferedWriter(newFileWriter(f1,true));
System.out.println(temp);
br1.write(temp);
br1.close();
//创建成功输出反馈信息
创建成功!
}catch(IOExceptione){
e.printStackTrace();
}//endclassCreateBranch
5.队列是一种“先进先出”的数据结构,数据进入队列时只能排在队尾,从队列中取数据时只能从队头读取。
请用java语言实现队列类Queue,其中包含inQueue、outQueue、readFront、showQueue、emptyQ、fullQ、length方法,分别为入队操作、出队操作、读取队首元素、显示队列中所有数据、判断队空、判断对满、获取队列长度。
新建Queue类的对象,进行以上各种操作。
//QueueInheritance.java
//结点类
classNode{
publicintelement;
publicNodelink;
publicNode()//无参构造函数
{
link=null;
}
publicNode(intnewelement,Nodenewlink)//带参构造函数
{
element=newelement;
link=newlink;
publicvoidsetElement(intnewelement)//设置当前结点的数据元素
element=newelement;
publicintgetElement()//取当前结点的数据元素
returnelement;
publicvoidsetLink(Nodenewlink)//设置下一个结点的对象引用
link=newlink;
publicNodegetlink()//取下一个结点的对象引用
returnlink;
}
//队列类
classQueue{
publicNodefront;
publicNoderear;
publicintsize;
privateintmaxSize;
publicQueue(ints)//有参构造函数
maxSize=s;
//为队列定义最大空间
front=rear=newNode();
publicvoidinQueue(intnumber)throwsException//入队操作
if(fullQ())
thrownewException("
队列已满!
else
rear.setLink(newNode(number,rear.link));
rear=rear.link;
size++;
publicintoutQueue()throwsException//出队操作
if(emptyQ())
队列已空!
else{
inttemp;
temp=front.link.getElement();
front.setLink(front.link.link);
size--;
returntemp;
publicintreadFront()throwsException//读取队首元素
if(emptyQ())
thrownewException("
returnfront.link.getElement();
publicvoidshowQueue()//显示队列中所有数据
NodeCuFront=newNode();
CuFront=front;
for(inti=0;
i<
size;
i++)
{
System.out.print(CuFront.link.getElement()+"
CuFront.setLink(CuFront.link);
CuFront=CuFront.link;
publicbooleanemptyQ()//判断队空否
if(size==0)
returntrue;
returnfalse;
publicbooleanfullQ()//判断队满否
if(maxSize==size)
publicintlength()//获取队列长度
returnsize;
publicclassQueueInheritance{
publicstaticvoidmain(String[]args)throwsIOException{
BufferedReaderInput=newBufferedReader(newInputStreamReader(System.in));
StringnumberString;
System.out.println("
请输入队列的长度:
numberString=Input.readLine();
ints=Integer.parseInt(numberString);
Queuequeue=newQueue(s);
请输入入队的数据:
for(intj=0;
j<
s;
j++)
numberString=Input.readLine();
intnumber=Integer.parseInt(numberString);
queue.inQueue(number);
//数据入队
队列中的数据为:
queue.showQueue();
//显示队列中所有数据
System.out.println();
出队列两个数据为:
System.out.println(queue.outQueue()+"
+queue.outQueue()+"
//数据出队
此时队列中的数据为:
//显示队列中剩余数据
此时队首数据为:
+queue.readFront());
此时队列的长度为:
+queue.length());
队列空否?
+queue.emptyQ());
队列满否?
+queue.fullQ());
}catch(Exceptione)
System.out.println(e.getMessage());
}//endclassQueueInheritance
6.堆栈Stack是java.util库中的工具类。
请生成n个1到10之间的随机整数,n值由命令行参数给出。
请打印出这n个数,并进行如下操作:
如果是奇数则将该数压入堆栈;
如果是偶数并且栈不为空,则将栈顶元素出栈;
如果是偶数但栈为空,则忽略该数。
请给出程序和操作结果。
//StackInheritance.java
importjava.util.Stack;
importjava.util.Random;
publicclassStackInheritance{
intn=Integer.parseInt(args[0]);
//n值由命令行参数给出
if(n<
=0)
thrownewException("
请输入一个正整数!
intnum[]=newint[n];
Randomrand=newRandom();
Stack<
String>
stack=newStack<
();
for(inti=0;
n;
num[i]=rand.nextInt(10)+1;
//生成1-10之间的随机整数
System.out.println("
第"
+(i+1)+"
个随机数:
+num[i]);
//打印出随机数
if(num[i]%2==1)
Strings=Integer.toString(num[i]);
stack.push(s);
//将随机数压入堆栈
else
if(!
stack.empty())
System.out.println(stack.pop());
//栈顶元素出栈
else
continue;
//忽略该数,继续下一个随机数
没有参数或参数不足!
}catch(NumberFormatExceptione2){
输入的不是数字!
}catch(Exceptione){
}//endclassStackInheritance
7.新建Book类,包括书名、书号、价格、字数等属性、toString()方法,以及构造函数。
请新建包含Book对象的集合,按照书号进行排序并输出排序之后的结果。
//BookNumber.java
importjava.util.*;
classBook{
StringbookName,
bookNumber,
bookPrice,
bookWordsNum;
publicBook(Stringname,Stringnumber,Stringprice,StringwordsNum)
bookName=name;
bookNumber=number;
bookPrice=price;
bookWordsNum=wordsNum;
publicStringgetNumber()
returnbookNumber;
publicStringtoString()
Stringoutput;
output="
书名:
+bookName+"
书号:
+bookNumber
+"
价格"
+bookPrice+"
字数"
+bookWordsNum;
returnoutput;
publicclassBookNumber{
Mapmap=newTreeMap();
//利用TreeMap对键的自动排序功能
Book[]b=newBook[5];
b[0]=newBook("
高等数学"
"
105"
20"
3万"
b[