全国Java语言程序设计一试题及答案文档格式.docx
《全国Java语言程序设计一试题及答案文档格式.docx》由会员分享,可在线阅读,更多相关《全国Java语言程序设计一试题及答案文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
C.XORMode()D.PaintMode()
8.用来定义临界段,能对共享对象的操作上锁的关键字是
A.staticB.share
C.serializeD.synchronized
9.如果一次从文件中读出一行数据,可使用的方法是
A.FileReader的readLine()方法B.BufferedReader的readLine()方法
C.FileReader的read()方法D.BufferedReader的read()方法
10.获取InetAddress对象的IP地址所用到的方法是
A.getHostlPAddress()B.getHostlP()
C.getHostAddress()D.getHost()
非选择题部分
用黑色字迹的签字笔或钢笔将答案写在答题纸上,不能答在试题卷上。
二、填空题(本大题共10小题,每空2分,共20分)
11.在Java语言中,双精度型变量在内存中占_____8____个字节。
12.在Java语言中,逻辑右移运算符为___>
>
_______。
13.在Java语言中,通过扩展原有的类,声明新类的机制被称为____继承______。
14.已知字节数组b,取由b[i]开始至b[j](其中j≥i≥0)结束的字节字符构造一个字符串s,其语句为:
Strings=newString(_b,i,j-i____);
。
15.将容器区域分成东、南、西、北、中五个区域的布局类是___BorderLayout_______。
16.在构造非强制对话框时,所使用的构造方法是JDialog(f,s,__false__),其中f为对话框所依赖的窗口,s为对话框的标题。
17.在Java语言中,要播放音频文件可以使用___AudioPlayer_______类。
18.当线程调用resume()方法后,就进入____就绪______状态。
19.要使用输入/输出操作的程序,必须要导入____java.io______包。
20.在进行数据库访问时,查询结果存放在一个用____ResultSet______类声明的对象中。
三、简答题(本大题共6小题,每小题3分,共18分)
21.请写出下面程序段的执行结果。
intn=90;
intk=2;
System.out.print(n+″=〞);
while(k<
=n){
if(k==n){System.out.println(n);
break;
}
elseif(n%k==0){System.out.print(k+″*″);
n=n/k;
)
elsek++;
}
答:
将一个数分解成质数因子,执行结果:
90=2*3*3*5
22.为了系统安全,对JavaApplet小应用程序有什么限制?
小应用程序不允许访问和使用本地文件,避免小应用程序破坏本地文件。
23.请写出声明int类型的二维数组intArr的三种形式。
int[][]intArr;
int[]intArr[];
intintArr[][];
24.请写出在JFrame框架窗口对象中添加组件的步骤。
用getContentPane()方法获得内容面板,再调用add(组件对象)方法将组件加入。
25.请写出使用Graphics2D类声明并创建一个左上角为(20,30)、边长为50的正方形对象square的语句。
Rectangle2Dsquare=newRectangle2D.Double(20,30,50,50);
26.请写出使用纯JavaJDBC驱动程序连接数据库的步骤。
(1)加载驱动程序
(2)创建指定数据库的URL
(3)建立连接
四、程序填空题(本大题共5小题,每空2分,共20分)
完全代码,使它能正确实现题意的功能。
错填、不填均无分。
27.一个数如果恰好等于它的因子之和,这个数就称为“完全数”。
例如6=1+2+3。
方法voidfindPerfectNumber()的功能是找出1000以内的所有完全数。
staticvoidfindPerfectNumber(){
System.out.println(″1000以内的完全数有:
″);
for(inti=1;
i<
1000;
i++){
intt=0;
for(intj=1;
j<
=i/2;
j++)
if(i%j==0)
t=t+j;
if(t==i)
System.out.primt(i+"
"
);
28.某应用程序的类实现了接口ActionListener,在其窗口的内容面板conPane中,有一个标上文字“红色”的按钮对象btn,并正确为该按钮对象注册了监视器。
按钮处理程序要实现的功能是当点击这个按钮时,窗口的背景色置为红色,并设置该按钮不再响应事件。
publicvoidactionPerformed(ActionEvente){
if(e.getActionCommand().equals("
红色"
)){
conPane.setBAckground(Color.red);
btn.removeActionListener(this);
29.某小应用程序有一个按钮和一个文本区,按钮作为发生键盘事件的事件源,并对它进行监视。
程序运行时,先点击按钮,让按钮激活;
从键盘输入英文字母时,在文本区显示输入的字母。
importjAva.applet.*;
importjava.awt.event.*;
importjavax.swing.*;
publicclassTest29extendsAppletimplementsKeyListener{
intcount=0;
JButtonbutton=newJButton("
BEGIN"
JTextAreatextl=newJTextArea(1,10);
publicvoidinit(){
button.addKeyListener(this);
add(textl);
text1.setEnabled(false);
publicvoidkeyPressed(KeyEvente){
intt=e.getKeyCode();
if(t>
=KeyEvent.VK_A&
&
t<
=KeyEvent.VK_Z){
text1.append((char)t+"
publicvoidkeyTyped(KeyEvente){}
publicvoidkeyReleased(KeyEvente){}
30.以下小应用程序获取图像文件bg.jpg并显示。
importjava.applet.*;
importjava.awt.*;
publicclassTest30extendsApplet{
lmagemyImg;
publicvoidstart(){
myImg=getImage(getCodeBase(),"
bg.jpg¨
publicvoidpaint(Graphicsg){
g.drawImage(myImg,0,0,this);
31.以下程序段实现简单的线程创建、启动和终止的过程。
MyThreadClassmyThread=newMyThreadClass();
myThread.start();
try{
myThread.sleep(10000);
Catch(InterruptedExceptione){
myThread.stop();
五、程序分析题(本大题共5小题,每小题4分,共20分)
32.阅读下列程序,请写出该程序的运行结果。
ClassParent{
Stringone,two;
publicParent(Stringa,Stringb){
one=a;
two=b;
publicvoidprint(){
System.out.println(two+"
to"
+one);
publicclassChildextendsParent{
publicChild(Stringa,Stringb){
super(a,b);
System.out.println(one+"
+two);
publicstaticvoidmain(Stringargs[]){
Parentp=newParent("
south"
,"
north"
Parentt=newChild("
east"
west"
p.print();
t.print();
解:
运行结果
northtosouth
easttowest
33.阅读下列程序,请写出该程序的功能。
importjava.applet.Applet;
publicclassTest33extendsApplet{
publicvoidpaint(Graphicsg){
for(inti=0;
6;
i++)
drawGraphics(I,g);
publicvoiddrawGraphics(intn,Graphicsg){
g.clearRect(10,10,300,300);
switch(n){
case0:
case3:
g.setColor(Color.red);
g.drawRect(50,50,150,150);
break;
case1:
case4:
g.setColor(Color.blue);
g.drawOval(40,40,160,160);
case2:
case5:
g.setColor(Color.green);
g.fillRect(50,50,200,200);
Thread.sleep(1500);
catch(InterruptedExceptione){System.exit(0);
在applet窗口中,每隔1500毫秒,依次显示出红色正方形、蓝色圆形、绿色填充的正方形各两次
34.阅读下列程序,请写出该程序的功能。
importjavax.swing.*;
importjava.awt.*;
importjava.awt.event.*;
publicclassTest34{
publicstaticvoidmain(String[]args){
ComboBoxDemomyComboBoxGUI=newComboBoxDemo();
classComboBoxDemoextendsJFrameimplementsItemListener{
StringCountryList[]={"
美国"
"
中国"
英国"
俄罗斯"
韩国"
德国"
};
intGoldMedalNumber[]={46,38,29,24,13,11};
JLabellabel;
JComboBoxcombobox;
publicComboBoxDemo(){
setSize(350,150);
setTitle("
第三十届伦敦奥运会金牌查询"
);
ContainerconPane=getContentPane();
conPane.setLayout(newFlowLayout());
combobox=newJComboBox(CountryList);
combobox.addItemListener(this);
conPane.add(combobox);
label=newJLabel();
conPane.add(label);
this.setVisible(true);
publicvoiditemStateChanged(ItemEvente){
if(e.getSource()==combobox)
label.setText(
String.valueOf(GoldMedalNumber[combobox.getSelectedIndex()]));
在"
窗口中显示一个下拉菜单,选中某一国家后,显示相应金牌数。
35.阅读下列程序,请回答下面的问题:
(1)两个文本区内分别每次追加何种字符?
有多少个?
左边的文本区每次追加6个大写字母;
右边的文本区每次追加6个数字字符
(2)两个文本区里面内容的显示速度有何区别?
左边文本区每400ms追加显示一次;
右边文本区每700ms追加显示一次
importiava.awt.*;
importjava.applet.*;
importjavax.swing.*;
publicclassTest35extendsApplet{
JTextArealText,rText;
publicvoidinit(){
setSize(600,500);
setLayout(null);
lText=newJTextArea();
rText=newJTextArea();
lText.setFont(newFont("
TimesNewRoman"
1,40));
rText.setFont(newFont("
Modern"
JScrollPanejsp1=newJScrollPane(lText);
JScrollPanejsp2=newJScrollPane(rText);
add(jsp1);
add(jsp2);
jsp1.setBounds(20,20,250,450);
jsp2.setBounds(310,20,200,450);
(newthread1(lText,"
1"
)).start();
(newthread1(rText,"
2"
classthread1extendsThread{
protectedJTextAreat;
Stringtext="
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
;
publicthread1(JTextAreatext,Stringm){super(m);
t=text;
publicvoidrun(){
while(true){
Strings="
for(inti=0;
6;
intk;
if(getName().equals("
))
k=((int)(Math.random()*100)%26);
else
k=((int)(Math.random()*100)%10)+26;
s+=text.charAt(k);
//获取k位置字符
t.append(s+"
\n"
t.setCaretPosition(t.getText().length());
//最近输出的内容在文本区中显示
try{sleep(getName().equals("
)?
400:
700);
catch(InterruptedExceptione){}
36.阅读下列程序,请写出该程序的功能。
importjava.io.*;
classTest36{
publicstaticvoidmain(Stringarg[]){
intch;
FileReaderin=newFileReader(newFile("
file1.txt"
));
FileWriterout=newFileWriter(newFile("
file2.txt"
while((ch=in.read())!
=-1){
if(ch>
=(int)'
A'
&
ch<
Z'
ch+=32;
elseif(ch>
a'
z'
ch-=32;
out.write(ch);
in.close();
out.close();
}catch(FileNotFoundExceptione1){
System.out.println("
文件没有找到!
+e1);
}catch(IOExceptione2){
文件读写出错!
+e2);
程序结束!
将file1.txt文件中的内容中所有大写字符转换成小写字符,所有小写字符转换成大写字符,并将转换后的内容保存到file2.txt文件中。
六、程序设计题(本大题共2小题,每小题6分,共12分)
37.编写方法int[][]transpose(int[][]a),方法将生成并返回一个新数组b,该数组为a的转置数组。
注:
数组转置指的是将数组的行、列内容互换。
方法如下:
publicstaticint[][]transpose(int[][]a){
int[][]b=newint[a[0].length][a.length];
for(inti=0;
a.length;
for(intj=0;
a[i].length;
j++){
b[j][i]=a[i][j];
}
}
returnb;
38.以下程序界面有一个标以“OK”的按钮bt、一个文本区ta和一个文本框tf。
当在文本框中输入内容完毕后,点击“OK”按钮可以使文本框内的字符串添加到文本区中,并输出文字“因点击按钮而引发添加”;
或者按回车键使得文本框内的字符串添加到文本区中,并输出文字“因在文本框里回车而引发添加”。
这里是给定程序的部分代码,你要编写的是actionPerformed(ActionEvente)方法。
importjavax.swing.*;
publicclassTest38extendsJFrameimplementsActionListener{
JButtonbt=newJButton("
OK"
JTeXtFieldtf=newJTextField(20);
JTextAreata=newJTextArea(10,20);
publicTest38(){
Containerc=getContentPane();
c.setLayout(newFlowLayout());
//指定布局方式为顺序布局
c.add(ta);
c.add(bt);
c.add(tf);
bt.addActionListener(this);
tf.addActionListener(this);
setSize(400,300);
setVisible(true);
publicvoidactionPerformed(ActionEvente){
//请在“答题纸’’上编写以下代码
if(e.getSource()==jButton){
jTextArea.append(jTextField.getText()+"
(因点击按钮而引发添加)\n"
if(e.getSource()==jTextField){
(因在文本框里回车而引发添加)\n"
publicstaticvoidmain(Stringargs[]){
newTest38();