程序答题总结.docx

上传人:b****4 文档编号:24582547 上传时间:2023-05-29 格式:DOCX 页数:14 大小:18.30KB
下载 相关 举报
程序答题总结.docx_第1页
第1页 / 共14页
程序答题总结.docx_第2页
第2页 / 共14页
程序答题总结.docx_第3页
第3页 / 共14页
程序答题总结.docx_第4页
第4页 / 共14页
程序答题总结.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

程序答题总结.docx

《程序答题总结.docx》由会员分享,可在线阅读,更多相关《程序答题总结.docx(14页珍藏版)》请在冰豆网上搜索。

程序答题总结.docx

程序答题总结

实验题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();

}

}

}

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

当前位置:首页 > 工作范文 > 行政公文

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

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