Java复习参考题.docx
- 文档编号:13803188
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:21
- 大小:75.86KB
Java复习参考题.docx
《Java复习参考题.docx》由会员分享,可在线阅读,更多相关《Java复习参考题.docx(21页珍藏版)》请在冰点文库上搜索。
Java复习参考题
一.阅读分析下面程序,将程序中的代码补充完整,并回答问题。
1.以下程序功能是输出11至101之间的质数,并统计这些质数的个数输出。
publicclassTest1{
publicstaticvoidmain(String[]args){
inti,j,count=0;
for(j=11;j<=101;j++){
for(i=2;i<=j/2;i++)
if(j%i==0)
break;
if(i>j/2){
count++;
System.out.println(j);}
}
System.out.println("11-101之间有"+count+"个质数。
");}
}
2.阅读并分析以下程序,将程序中的代码补充完整。
publicclassCalendarFrameextendsFrameimplementsActionListener
{LabellabelDay[]=newLabel[42];
ButtontitleName[]=newButton[7];
Stringname[]={"日","一","二","三","四","五","六"};
ButtonnextMonth,previousMonth;
intyear=2006,month=10;
CalendarBeancalendar;
LabelshowMessage=newLabel("",Label.CENTER);
publicCalendarFrame()
{PanelpCenter=;
pCenter.setLayout(newGridLayout(7,7));
for(inti=0;i<7;i++)
{titleName[i]=;
pCenter.add(titleName[i]);
}
for(inti=0;i<42;i++)
{
labelDay[i]=newLabel("",Label.CENTER);
pCenter.add(labelDay[i]);
}
calendar=newCalendarBean();
calendar.setYear(year);
calendar.setMonth(month);
Stringday[]=calendar.getCalendar();
for(inti=0;i<42;i++)
{labelDay[i].setText(day[i]);
}
nextMonth=newButton("下月");
previousMonth=newButton("上月");
nextMonth.;
previousMonth.;
PanelpNorth=newPanel(),
pSouth=newPanel();
pNorth.add(previousMonth);
pNorth.add(nextMonth);
pSouth.add(showMessage);
showMessage.setText("日历:
"+calendar.getYear()+"年"+calendar.getMonth()+"月");
ScrollPanescrollPane=newScrollPane();
scrollPane.add(pCenter);
//窗口添加scrollPane在中心区域
//窗口添加pNorth在北面区域
//窗口添加pSouth在南区域。
}
publicvoidactionPerformed(e)
{if(e.==nextMonth)
{month=month+1;
if(month>12)
month=1;
calendar.setMonth(month);
Stringday[]=calendar.getCalendar();
for(inti=0;i<42;i++)
{labelDay[i].setText(day[i]);
}
}
elseif(e.==previousMonth)
{month=month-1;
if(month<1)
month=12;
calendar.setMonth(month);
Stringday[]=calendar.getCalendar();
for(inti=0;i<42;i++)
{labelDay[i].setText(day[i]);
}
}
showMessage.("日历:
"+calendar.getYear()+"年"+calendar.getMonth()+"月");
}
}
3.使用滚动条改变背景颜色
程序功能:
移动滚动条可以改变背景颜色。
阅读并分析以下程序,将程序中的代码补充完整。
publicclassKY7_2extendsAppletimplementsAdjustmentListener{
Scrollbarr1,r2,r3;
intred,green,blue;
TextFieldt;
Labela;
publicvoidinit(){
setLayout(null);
r1=newScrollbar(Scrollbar.HORIZONTAL,0,1,0,255);
r2=newScrollbar(Scrollbar.HORIZONTAL,0,1,0,255);
r3=newScrollbar(Scrollbar.HORIZONTAL,0,1,0,255);
t=newTextField("0",5);
t.setEditable(false);
a=newLabel("移动滚动条可改变背景颜色",Label.CENTER);
add(a);
a.setBounds(120,10,150,15);
代码1;//添加滚动条r1
r1.setBounds(20,30,100,20);
代码2;//添加滚动条r2
r2.setBounds(140,30,100,20);
代码3;//添加滚动条r3
r3.setBounds(260,30,100,20);
add(t);
t.setBounds(20,120,220,18);
r1.addAdjustmentListener(this);
代码4;
代码5;
}
publicvoidadjustmentValueChanged(AdjustmentEvente){
red=r1.getValue();
代码6;
代码7;
t.setText("red的值"+String.valueOf(r1.getValue())+",green的值"+String.valueOf(r2.getValue())+",blue的值"
+String.valueOf(r3.getValue()));
Colorc=newColor(red,green,blue);
代码8;//设置背景色
}
}
4.编写一个应用程序,除了主线程外,还有两个线程:
first和second。
first负责模拟一个红色的按钮从坐标(10,60)运动到(100,60);second负责模拟一个绿色的按钮从坐标(100,60)运动到(200,60)。
阅读并分析以下程序,将程序中的代码补充完整。
//MoveButton.java
importjava.awt.*;
importjava.awt.event.*;
publicclassMoveButtonextendsFrameimplementsRunnable,ActionListener
{//用Thread类声明first,second两个线程对象
ButtonredButton,greenButton,startButton;
intdistance=10;
MoveButton()
{first=newThread(this);
second=newThread(this);
redButton=newButton();
greenButton=newButton();
redButton.setBackground(Color.red);
greenButton.setBackground(Color.green);
startButton=newButton("start");
startButton.;
setLayout(null);
add(redButton);
redButton.setBounds(10,60,15,15);
add(greenButton);
greenButton.setBounds(100,60,15,15);
add(startButton);
startButton.setBounds(10,100,30,30);
setBounds(0,0,300,200);
setVisible(true);
validate();
addWindowListener(newWindowAdapter()
{publicvoidwindowClosing(WindowEvente)
{System.exit(0);
}
}
);
}
publicvoid(ActionEvente)
{try{first.start();
second.start();
}
catch(Exceptionexp){}
}
publicvoidrun()
{while(true)
{if()//判断当前占有CPU资源的线程是否是first
{moveComponent(redButton);
try{Thread.sleep(20);
}
catch(Exceptionexp){}
}
if()//判断当前占有CPU资源的线程是否是second
{moveComponent(greenButton);
try{Thread.sleep(10);
}
catch(Exceptionexp){}
}
}
}
publicsynchronizedvoidmoveComponent(Componentb)
{
if(Thread.currentThread()==first)
{while(distance>100&&distance<=200)
try{wait();
}
catch(Exceptionexp){}
distance=distance+1;
b.setLocation(distance,60);
if(distance>=100)
{b.setLocation(10,60);
notifyAll();
}
}
if(Thread.currentThread()==second)
{while(distance>=10&&distance<100)
try{wait();
}
catch(Exceptionexp){}
distance=distance+1;
b.setLocation(distance,60);
if(distance>200)
{distance=10;
b.setLocation(100,60);
notifyAll();
}
}
}
}
//MoveButtonMainClass.java
MoveButtonMainClass.java
publicclassMoveButtonMainClass
{publicstaticvoidmain(Stringargs[])
{MoveButtonmb=newMoveButton();
}
}
5.练习使用InetAddress类。
对程序进行分析,写出分析结果。
import.*;
publicclassGetIP{
publicstaticvoidmain(Stringargs[]){
try{
InetAddressaddress_1=InetAddress.getLocalHost();
//获得本地主机的计算机名和IP地址
System.out.println(address_1.toString());
InetAddressaddress_2=InetAddress.getByName("");
//获得主机地址的域名和IP地址
System.out.println(address_2.toString());
InetAddressaddress_3=InetAddress.getByName("61.183.20.30");
System.out.println(address_3.toString());
}catch(UnknownHostExceptione){
System.out.println("无法找到………….");
}
}
}
6.以下方法的功能是已知域名,返回IP地址,将程序补充完整。
StringgetHostAddr(StringdomainName){
try{
InetAddressaddr=InetAddress.getByName(domainName);
returnaddr.getHostAddress();
}catch(UnknownHostExceptione){
e.printStackTrace();}
returnnull;
}
6.阅读下面的程序并补充完整,掌握获取URL信息的一些方法。
import.*;
importjava.io.*;
publicclassURLTest{
publicstaticvoidmain(String[]args){
URLurl=null;
InputStreamis;
try{
url=newURL(":
8080/eas/index.html");
is=url.openStream();
intc;
try{
while((c=is.read())!
=-1)
System.out.print((char)c);
}catch(IOExceptione){
}finally{
is.close();
}
}catch(MalformedURLExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}
System.out.println("文件名:
"+【代码1】);//获取url对象的文件名System.out.println("主机名:
"+【代码2】);//获取主机名System.out.println("端口号:
"+【代码3】);//获取端口号
System.out.println("协议名:
"+【代码4】);//获取协议名称
}
}
7.要求:
编写带图形界面的聊天程序,实现让客户可以持续地发送消息给服务器,服务器也可以即时看到客户端发送的消息,并回消息给客户端。
程序运行界面如下:
//服务器端程序如下:
publicclassMyServerextendsJFrameimplementsActionListener{
JTextAreajta;
JTextFieldjtf;
JButtonjb;
JPaneljp;
ServerSocketss;
Socketsocket;
DataOutputStreamout;
DataInputStreamin;
publicMyServer(){
jta=newJTextArea();
jtf=newJTextField(15);
jb=newJButton("发送");
jp=newJPanel();
jp.add(jtf);
jp.add(jb);
JScrollPanejsp=newJScrollPane(jta);
this.add(jsp,BorderLayout.CENTER);
this.add(jp,BorderLayout.SOUTH);
jb.addActionListener(this);
jtf.addActionListener(this);
//展现
this.setTitle("服务器");
this.setSize(300,200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
//开放端口
try{
ss=newServerSocket(9000);
System.out.println("等待连接");
socket=ss.accept();
System.out.println("已连接");
out=newDataOutputStream(socket.getOutputStream());
in=newDataInputStream(socket.getInputStream());
while(true){
//接受客户端发送数据
Stringstr=in.readUTF();
//显示多行文本框中
jta.append("客户端说:
"+str+"\r\n");
}
}catch(IOExceptione){
e.printStackTrace();
}
}
publicstaticvoidmain(String[]args){
newMyServer();
}
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==jb||e.getSource()==jtf){
//向客户端发送数据
try{
out.writeUTF(jtf.getText());
}catch(IOExceptione1){
e1.printStackTrace();
}
//向多行文本框输入历史聊天记录信息
jta.append("服务器说:
"+jtf.getText()+"\r\n");
//清空单行文本框内容
jtf.setText("");
}
}
}
//客户端程序如下:
publicclassMyClientextendsJFrameimplementsActionListener{
JButtonjb;
JTextAreajta;
JTextFieldjtf;
JPaneljp;
Socketsocket;
DataOutputStreamout;
DataInputStreamin;
publicMyClient(){
jta=newJTextArea();
jtf=newJTextField(15);
jb=newJButton("发送");
jp=newJPanel();
jp.add(jtf);
jp.add(jb);
JScrollPanejsp=newJScrollPane(jta);
this.add(jsp,BorderLayout.CENTER);
this.add(jp,BorderLayout.SOUTH);
jb.addActionListener(this);
jtf.addActionListener(this);
//展现
this.setTitle("客户端");
this.setSize(300,200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
try{
//建立连接
socket=newSocket("127.0.0.1",9000);
out=newDataOutputStream(socket.getOutputStream());
in=newDataInputStream(socket.getInputStream());
while(true){
//接受服务器发送数据
Stringstr=in.readUTF();
//显示在多行文本框
jta.append("服务器说:
"+str+"\r\n");
}
}catch(UnknownHostExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}
}
publicstaticvoidmain(String[]args){
newMyClient();
}
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==jb||e.getSource()==jtf){
//向服务
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 复习 参考