程序答题总结.docx
- 文档编号:24582547
- 上传时间:2023-05-29
- 格式:DOCX
- 页数:14
- 大小:18.30KB
程序答题总结.docx
《程序答题总结.docx》由会员分享,可在线阅读,更多相关《程序答题总结.docx(14页珍藏版)》请在冰豆网上搜索。
程序答题总结
实验题4写一程序统计纯文本文件“Early-Precaution.txt”的大写字母、小写字母个数,并将所有小写字母转换为大写字母,输出到result.txt。
代码:
importjava.io.*;
publicclassGetchar{
FileReaderfr;
publicstaticvoidmain(String[]args){
FileReaderfr;
try{
fr=newFileReader("F:
\\Early-Precaution.txt");
Filefile=newFile("F:
\\result.txt");
FileWriterfos=newFileWriter(file);
BufferedReaderbr=newBufferedReader(fr);
BufferedWriterbw=newBufferedWriter(fos);
Stringaline;
intk=0;
intm=0;
while((aline=br.readLine())!
=null)
{
Stringstr=newString(aline);
char[]s=newchar[str.length()];
s=str.toCharArray();
for(inti=0;i { if(s[i]>='a'&&s[i]<='z') { k++; } elseif(s[i]>='A'&&s[i]<='Z') { m++; } } StringSTR=str.toUpperCase(); bw.write(STR+"\n"); } br.close(); bw.close(); "小写字母的个数为: "); ; "大写字母的个数为: "); ; }catch(IOExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } } } 实验题5对象输入与输出流 将Student类的一个实例写到文件中student.txt中,并从student.txt 中读取这个实例, 代码: packageobjectobject; importjava.io.*; publicclassReadObject{ publicstaticvoidmain(Stringargs[]){ Studentstu=null; try{ FileInputStreamfi=newFileInputStream("c: \\date.ser"); ObjectInputStreamsi=newObjectInputStream(fi); stu=(Student)si.readObject(); si.close(); "ID: "+stu.id+"name: "+ stu.name+"age: "+stu.age+"dept.: "+stu.department); }catch(Exceptione){ ;} } } packageobjectobject; import; classStudentimplementsSerializable{ privatestaticfinallongserialVersionUID=1L; intid; intage; Stringname; Stringdepartment; publicStudent(intid,Stringname,intage,Stringdepartment){ this.id=id; this.name=name; this.age=age; this.department=department; } } packageobjectobject; importjava.io.*; publicclassWriteObject{ publicstaticvoidmain(Stringargs[]){ Studentstu=newStudent(981036,"LiMing",16,"CSD"); try{ FileOutputStreamfo=newFileOutputStream("c: \\date.ser"); ObjectOutputStreamso=newObjectOutputStream(fo); so.writeObject(stu); so.close(); }catch(Exceptione){} } } 任务一: 火车售票 假设有火车票1000张,创建10个线程模拟10个售票点,每个售票点100毫秒买一张票。 打印出售票过程,注意使用synchronized确保同一张票只能卖出一次。 代码: publicclassTaskone{ publicstaticvoidmain(String[]args){ Yxt=newYx(); newThread(t,"1").start(); newThread(t,"2").start(); newThread(t,"3").start(); newThread(t,"4").start(); newThread(t,"5").start(); newThread(t,"6").start(); newThread(t,"7").start(); newThread(t,"8").start(); newThread(t,"9").start(); newThread(t,"10").start(); } } publicclassYxextendsThread{ intticket=200; Stringname=""; publicvoidrun(){ while(true){ synchronized(name){ if(ticket<=0) break; "第"+Thread.currentThread().getName() +"售票点卖出第"+ticket--+"张票"); try{ Thread.sleep(100); }catch(InterruptedExceptione){ e.printStackTrace(); } } } } } 任务二: 银行存款 假设某家银行,它可接受顾客的汇款,每做一次汇款,便可计算出汇款的总额。 现有两个顾客,每人都分3次,每次100元将钱到入。 试编写一个程序,模拟实际作业。 代码: classCBank { privatestaticintsum=0; publicstaticvoidadd(intn){ inttmp=sum; tmp=tmp+n;//累加汇款总额 try{ Thread.sleep((int)(10000*Math.random()));//小睡几秒钟 } catch(InterruptedExceptione){} sum=tmp; "sum="+sum); } } classCCustomerextendsThread//CCustomer类,继承自Thread类 { publicvoidrun(){//run()method for(inti=1;i<=4;i++) CBank.add(1000); //"sum="+CBank);//将1000元分三次汇入 } } publicclassbank { publicstaticvoidmain(Stringargs[]) { CCustomerc1=newCCustomer(); CCustomerc2=newCCustomer(); c1.start(); c2.start(); } } 任务三: 生产者和消费者问题 生产者生产面包,消费者消费面包,“生产”和“消费”各代表一个进程,当生产者没有生产出面包的时候,消费者不能消费面包。 当消费者没有消费完面包的时候,生产者不能再生产。 代码: packageProduct; publicclassThreadAextendsThread{ Waterwater; publicThreadA(WaterwaterArg){ water=waterArg; } publicvoidrun(){ "开始生产……"); for(inti=1;i<=5;i++){//循环5次 try{ Thread.sleep(1000);//休眠1秒,模拟1分钟的时间 +"个"); }catch(InterruptedExceptione){ e.printStackTrace(); } } water.setWater(true);//设置水塘有水状态 "生产完毕。 "); synchronized(water){ water.notify();//线程调用notify()方法 } } } packageProduct; publicclassThreadBextendsThread{ Waterwater; publicThreadB(WaterwaterArg){ water=waterArg; } publicvoidrun(){ "启动消费"); if(water.isEmpty()){//如果水塘无水 synchronized(water){//同步代码块 try{ "还没有生产出面包,等待中……"); water.wait();//使线程处于等待状态 }catch(InterruptedExceptione){ e.printStackTrace(); } } } "开始消费……"); for(inti=5;i>=1;i--){//循环5侧 try{ Thread.sleep(1000);//休眠1秒,模拟1分钟 +"个"); }catch(InterruptedExceptione){ e.printStackTrace(); } } water.setWater(false);//设置水塘无水状态 "消费完毕。 "); } } 任务一: InetAddress类练习 使用InetAddress类的方法获取;获取本地机的名称和IP地址。 代码: packageLab8; import; publicclassInetAddressDemo{ publicstaticvoidmain(String[]args)throwsException{ InetAddresslocAdd=null; InetAddresspku=null; locAdd=InetAddress.getLocalHost();//得到本机 ; pku=InetAddress.getByName(""); "学校IP地址: "+pku.getHostAddress()); "本机的IP地址: "+locAdd.getHostAddress()); "本机的名称"+locAdd.getHostName()); } } 任务二: Socket类和ServerSocket类练习: 利用Socket类和ServerSocket类编写一个C/S程序,实现C/S通信。 客户端向服务器端发送“Time”命令,服务器端接受到该字符串后将服务器端当前时间返回给客户端;客户端向服务器端发送“Exit”命令,服务器端向客户端返回“Bye”后退出。 代码: packageLab8; importjava.io.*; import.*; importjava.util.*; publicclassServerimplementsRunnable{ publicServerSocketss; publicSockets; publicInputStreamis; publicOutputStreamos; publicServer(){ "服务器已启动! "); try{ ss=newServerSocket(8002); s=ss.accept(); is=s.getInputStream(); os=s.getOutputStream(); Threadt=newThread(this); t.start(); while(true){ Scannera=newScanner(System.in); Stringb=a.next(); os.write(b.getBytes()); } }catch(IOExceptione){ e.printStackTrace(); } } publicvoidrun(){ while(true){ try{ while(s.isConnected()){ Thread.sleep(50); bytebuy[]=newbyte[100]; intlen; len=is.read(buy); Stringstring=newString(buy,0,len); if(string.equals("Time")){ Calendarc=Calendar.getInstance(); Stringstr="现在时间是: "+c.get(Calendar.HOUR_OF_DAY)+": "+c.get(Calendar.MINUTE)+": "+c.get(Calendar.SECOND); ; os.write(str.getBytes()); } elseif(string.equals("Exit")){ os.write("Bye! ".getBytes()); os.flush(); "连接已经断开! "); System.exit(0); } else{ ; } } is.close(); os.close(); s.close(); ss.close(); }catch(Exceptione){ e.printStackTrace(); } } } publicstaticvoidmain(String[]args){ newServer(); } } 任务三: DatagramSocket类和DatagramPacket类练习 编写一个数据报通信程序,实现简单的聊天功能。 基本要求: 两人一组编写完整程序。 为了给大家减轻负担,Swing部分的代码已给出。 (请同学们到作业管理系统下载Lab8.zip中的UDPmessage.java) 代码: 任务四: 传输对象输入与输出流 现有一个Student类,程序实现: 从服务器端传输一个Student对象到客户端,基本要求: 使用Socket类和ServerSocket类实现。 代码: packageLab8; import; import; import; import; import; publicclassObjectServer{ publicstaticvoidmain(String[]args){ ServerSocketserver=null; Sockets=null; OutputStreamops=null; ObjectOutputStreamoos=null; Studentstu=newStudent(10090,"小明",20); try{ server=newServerSocket(9001); s=server.accept(); ops=s.getOutputStream(); oos=newObjectOutputStream(ops); oos.writeObject(stu); oos.close(); s.close(); server.close(); } catch(IOExceptione){ e.printStackTrace(); } } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序 答题 总结
![提示](https://static.bdocx.com/images/bang_tan.gif)