用if语句实现程序:从有程序记录键盘输入入一个四位正整数,首先分离出该整数中的每一位数字, 然后用分离出的数字组成

君,已阅读到文档的结尾了呢~~
实验6 选择结构程序设计
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
实验6 选择结构程序设计
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口编写一个程序,从键盘输入一个正整数,判断该正整数为几位数,并输【c++吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:289,374贴子:
编写一个程序,从键盘输入一个正整数,判断该正整数为几位数,并输收藏
大神们,,求解...
快试试吧,可以对自己使用挽尊卡咯~◆◆
快试试吧,可以对自己使用挽尊卡咯~◆◆
快试试吧,可以对自己使用挽尊卡咯~◆◆
快试试吧,可以对自己使用挽尊卡咯~◆◆
//编写一个程序,从键盘输入一个正整数,判断该正整数为几位数,并输出其位数#include&iostream&class Number{public:&&&& Number(int n):num(n){}&&&& Number(){};&&&& ~Number(){cout&&"number destructor........"&&}&&&& void display();&&&& void set();private:&&&&};void Number::set(){&&&& cout&&"input a number:"&&&&&& cin&&}void Number::display(){&&&& int count=0;&&&& int a[10];&&&& int k=&&&& while(k)&&&& {&&&&&&&& a[count]=k%10;&&&&&&&& count++;&&&&&&&& k=k/10;&&&& }&&&& cout&&count&&&&&& for(int i=count-1; i&=0; i--)&&&& {&&&&&&&& cout&&a[i]&&" ";&&&& }&&&& cout&&}int main(){&&&& Number num1;&&&& num1.set();&&&& num1.display();&&&& return 0;}
快试试吧,可以对自己使用挽尊卡咯~◆◆
#include &stdio.h&#include &ctype.h&int main() {&& int c, count = 0;&& while ((c = getchar()) != EOF && isdigit(c)) count++;&& printf("%d\n", count);&& return 0;}
从这3个问题可以看出LZ是文盲+懒鬼
楼上的搞的复杂了吧,我给改了一下#include &iostream&using std::using std::using std::class number{public:&&&& number(int num = 0){Number =}&&&& void set( );&&&& void display( );&&&& ~number( ){cout &&"discontruct number..."&&}private:&&&& int N};void number::set( ){&&&& cout &&"input an integer: ";&&&& cin &&N}void number::display( ){&&&& int count = 0;&&&&&&&& do&&&& {&&&&&&&& Number /= 10;&&&&&&&& count++;&&&& }while(Number & 0);&&&& cout &&count&&}int main( ){&&&&&&&& integer.set( );&&&& integer.display( );&&&& return 0;}
额。。。。请吧友加强数学功底:#include&iostream&#include&cmath&int main(){&&
cnt=(int)(log(n));&&
cout&&cnt&&&&
return 0;}
在那个是有些初学者……没事搞个构造和析构……
快试试吧,可以对自己使用挽尊卡咯~◆◆
回复:9楼首先log以e为底,要换算为以10为底,且结果要加1。其次这个方法不可行,精度损失会带来问题:(int)(log(n)/log(10)) + 1 or (int)(log(n)/log(10) + 1) 大多数的时候工作的很好,但是在我的cygwin上: 以及 输出结果都为9而且说句实话,计算整数位数的话,用状态机比浮点运算快得多。
回复:11楼原来如此,学习了
//编写一个程序,从键盘输入一个正整数,判断该正整数为几位数,并输出其位数#include&iostream&int main(){&&&&&&&& int i=0;&&&&&&&& cout&&"Enter a number: ";&&&& cin&&&&&& while(num&0)&&&& {&&&&&&&& i++;&&&&&&&& num=num/10;&&&& }&&&& cout&&"This number bits is: ";&&&& cout&&i;&&&& cout&&'\n';&&&& system("pause");&&&& return 0;}
/*编写一个程序,从键盘输入一个正整数,判断该正整数为几位数,并输出其各位数之和*/#include&iostream&int main(){ int i=0;//i为这个整数的位数,//n为输入的整数, int sum=0;//sum为这个整数各位数数值之和 cout&&"请输入一个整数:"; cin&&n; while(n&0) {
sum+=(n%10);//得到这个整数的最后一位数的数值
n/=10;//得到这个整数的其它位的数值
i++; } cout&&"这个整数为"&&i&&"位数\n"
&&"这个整数各位数之和为:"&&sum&& system("pause");}
#include&iostream&#include&string&int main(){string str1, str2;cin&&str1;str2 = str1;if(str1.size == 0)return 0;for(int k=0; k&str1.size(); k++){if(str1[k] == ' ')str2..erase(k, 1);}count&&"整数位数:"&&str2.size()&&return 0;}
登录百度帐号推荐应用实验4 选择结构程序设计_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
实验4 选择结构程序设计
&&C语言 学习
阅读已结束,下载文档到电脑
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,方便使用
还剩11页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢08--13年全国自考java语言程序设计一试题及答案
2008 年 10 月全国自考 Java 语言程序设计(一)真题及答案一、单项选择题(本大题共 10 小题,每小题 1 分,共 10 分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均 无分。 1.下述字符组合不能作为 Java 程序标识符的是( ) A.Aa12 B.大 x C.y 小 D.5x 2.以下程序代码的输出的结果是( ) int x=53; System. out. println(1.0+x/2); A.27.0 B.27.5 C.1.026 D.1.026.5 3.参照以下 Java 代码,以下四个叙述中最确切的是( ) class A{ void fac(String s){Syatem. out. println("字符串:"+s);} } A.x、y 和 s 都是成员变量 B.x 是实例变量、y 是类变量、s 是局部变量 C.x 和 y 是实例变量、s 是参数 D.x、y 和 s 都是实例变量 4.需要分析字符串,并将字符串分解成可被独立使用的单词,可使用 java. util 包中的类是 ( ) A.String B.StringBuffer C.StringTokenizer D.stringTokenizer 5.要为程序的子窗口设定一个由字符串 s 指定的名字,可以采用的代码是( ) A.JFrame(s) B.window(s) C.new JFrame(s) D.super(s) 6.以下关于菜单的叙述中,正确的是( ) A.菜单分三级定义,最高一级的是菜单条,菜单条中放菜单,菜单中放菜单项 B.菜单分三级定义,最高一级的是菜单,菜单中放菜单条,菜单条中放菜单项 C.菜单分两级定义,最高一级的是菜单,菜单中放菜单项 D.菜单分两级定义,最高一级的是菜单条,菜单条中放菜单项 7.以下所述内容全部是字型要素的是( ) A.字体、字形和大小 B.字体、风格和字号 C.字形、风格和字号 D.字形、颜色和字号 8.用 Thread 子类实现多线程的步骤顺序是( ) A.声明 Thread 类的子类,创建 Thread 子类的实例,让线程调用 start()方法 B.声明 Thread 类的子类,在子类中重新定义 run()方法,创建 Thread 子类的实例 C.创建 Thread 子类的实例,让线程调用 start()方法 D.声明 Thread 类的子类,在子类中重新定义 run()方法,创建 Thread 子类的实例,让线程调用 start()方法 9.为 16 位 Unicode 字符流提供读和写操作支持的类分别是( ) A.FileInputStream 类和 FileOutputStream 类 B.InputStream 类和 OutputStream 类 C.FileReader 类和 FileWriter 类 D.File_Reader 类和 File_Writer 类 10.能利用对象提供的方法获得流对象和实现网络连接的是( ) A.URLConnection 对象 B.URL 对象 C.InetAddress 对象 D.TCP/IP 对象 二、填空题(本大题共 10 小题,每小题 2 分,共 20 分) 请在每小题的空格中填上正确答案。 错填、 不填均无分。 11.一个小应用程序必须定义成一个_________。 12.用条件运算符构造一个表达式:goal 等于 10 时,表达式的值为“对了!,否则,表达式的值为“错了!。这个 ” ” 表达式是_________。 13.类是对一组相同对象的描述,类概括了同类对象的共有性质:_________。 14.设有数组 a 和 b 的定义如下: int[]a={1,2,3};int[]b={4,5,6} ?? 执行以下代码“a=b; ”,除了完成赋值操作之外,引起系统额外要做的工作是_________。 15. _________布局使容器的多个组件拥有同一个显示空间,某一时刻只能显示一个组件。 16.Java 语言为处理鼠标事件提供两个接口:_________接口和 MouseMotionListener 接口。 17.某个绘图方法设置成“异或模式”绘图,并用黄色作为异或模式设定的绘图颜色。如果当时背景色为红色,并 用红色绘制线段,则线段的实际颜色是_________。 18.程序员用 Java 语言编写多线程应用程序,程序员能控制的关键性工作有两个方面:一是编写线程的_________ 方法;二是建立线程实例。 19.BufferedWriter 类是提供缓冲式输出的类。程序需要先创建_________对象,再利用这个对象创建 BufferedWriter 对象。 20.在 Java 语言中,客户端使用的套接字类是_________。 三、简答题(本大题共 6 小题,每小题 3 分,共 18 分) 21.请写出表示条件“x=2 与 y=3 有且只有一个成立”的 Java 表达式” 。 22.如果类 Student 是类 Person 的子类, Undergraduate 是类 Student 的子类, 类 请指出以下代码行中哪些是不合法的。 Person p1=new Student(); Person p2=new Undergraduate(); Student s1=new Person(); Student s2=new Undergraduate(); Undergraduate ug1=new Person(); Undergraduate ug2=new Student(); Object ob=new Student(); 23.请写出程序处理文本框输入结束事件(回车)添加监视器的方法,以及监视器类必须实现的接口方法。 24.请写出一条语句, 能够绘制一条从点 (20, 30) 开始, 长为 100 像素的水平线段。 设调用的对象是类型为 Graphics 的 g。 25.某 Java 程序要使用文件输入输出流,请写出该程序所需要的 import 语句。 26.JDBC 是 Java 程序与数据库连接的 API,请写出 JDBC 能做的三件事情。 四、程序填空题(本大题共 5 小题,每空 2 分,共 20 分) 27.方法 int maxDigit(int n)的功能是找出十进制整数 n 各位中最大的一位数字。例如,n=23765,该方法的返回值是 7。 static int maxDigit(int n){ int c=0,d; while(n>0){ d=_______; if(d>c) c=d; n/=10; } ________; } 28.某程序的界面包含一个文本区 text1、一个文本框 text2 和一个按钮 button。实现在文本区中输入整数序列后,点 击按钮,程序响应按钮事件,累计文本区输入的整数序列,并将总和输出在文本框中。这里给出的是其中相应按钮 事件的方法。 public void actionPerformed(ActionEvent e){ if(e.getSource()==button){ String s=text1.________;//获取 text1 中的信息 StringTokenizer fenxi=new StringTokenizer(s,",,,\n"); int n=fenxi.countTokens(); double a[]=new double[n]; for(int i=0;i<n;i++){ String temp=fenxi.nextToken(); a[i]=Double.valueOf(temp).doubleValue(); } sum=0; for(int i=0;i<n;i++){ __________; } text2.setText(""+sum);//刷新显示。} } 29.以下是生成菜单项对象,以及菜单项选择事件处理方法的部分代码。要求当菜单项 singingItem 被选中时,在文 本框 text 中输出“唱歌菜单项被选中! ”的字样。 ?? singingItem=new________("唱歌");//生成菜单项对象 ?? public void actionPerformed(ActionEvent e){ if(e.getSource()==singingItem) text.setText(e.________()+ "菜单项被选中!"); } 30.某小应用程序实现幻灯片放映。小应用程序的 init()方法将幻灯片读入数组中存储和注册鼠标监视器。程序运行 时,单击鼠标,就顺序变换放映幻灯片的序号。这里给出的是其中的 paint()方法和 mousePressed()方法。 final int number=30;//假定幻灯片有 30 张 int count=0; Image[]pic=new Image[number]; public void paint(______gc){ if((pic[count])!=null) gc.drawImage(pic[count],10,10,pic[count].getWidth(this), pic[count].getHeight(this),this); } public void mousePressed(MouseEvent e){ count=(count+1)%//循环逐张显示 __________; } 31.以下定义的类 shareDataManager 用于管理多个线程共享数据 data。 一些线程要减少 data, 另一些线程要增加 data。 由于 data 不可以是负值,修改 data 的方法对这些线程来说不仅要互斥,还要同步。类提供一个方法 modiData()供修 改 data 的线程调用,该方法在 data 修改结束后,应通知其它等待进入这个方法的线程。 class ShareDataManager{ int data=0; ________void modiData(int delta){ if(delta>=0){ data+= }else { while(data <delta){ try{System.out.println("发生等待!"); wait(); }catch(InterruptedException e){ } } data-= } _________; } ShareDataManager(int ititData){data=initD} } 五、程序分析题(本大题共 5 小题,每小题 4 分,共 20 分) 32.阅读下列程序,请写出该程序的输出结果。 import java.applet.*;import java.awt.*; class Point{ int x,y; Point(int xx,int yy){ x=y=} Point(Point p){x=p.x;y=p.y; } void m(int dx,int dy){x+=y+=} } class Circle extends Point{ Circle(Point p, int rr){ super(p); r= } float c(){ return 3.14f*2.0f*r; } float a(){ return 3.14f*r*r;} } public class sample extends Applet{ C P public void init() {d=new Point(2,5);yuan=new Circle(d,10);} public void paint(Graphics g){ g.drawString("yuan Circle"+(int)(yuan.c()*100.0)/100.0,5,20); g.drawString("yuan Area"+(int)(yuan.a()*100.0)/100.0,5,40); } } 33.阅读下列程序,请写出该程序的功能。 import java. util.*; public class Class1{ public static void main(Srting args[]){ Date date1=new Date(); System. out. println (datel); String t=datel.toString(); int endPos=t.indexOf(`C'); t=t.substring(11,endPos); System. out println(t); } } 34.阅读下列程序,请写出该程序的功能。 import java.applet.*;import javax.swing.*;import java.awt.event.*; public class Class l extends Applet implements ActionListener{ JTextField text1,text2; public void init(){ text1=new JTextField(10); text2=new JTextField(10); setSize(200,100); add(text1); add(text2); text1.addActionListener(this); } public void actionPerformed(Action Event e){ if(e.getSource()==text1){ n=Long.parseLong(text1.getText()); text2.setText(String.valueOf(n*n)); } } } 35.阅读以下程序,请写出该程序的功能。 import javax.swing.*; import java.awt.*;import java.awt.event.*; class MyScrollBar extends JscrollBar{ public MyScrollBar(int init, int len, int low, int high){ super(JScrollBar. HORIZONTAL, init,len,low,high); } } class MyWindow extends JFrame implements AdjustmentListener{ private JTextF MyWindow(String s){ super(s); MyScrollBar myBar=new MyScrollBar(10,10,0,255); Container con=this. getContentPane(); con. setLayout(new GridLayout(2,1)); this. setSize(200,100); this. setLocation(100,100); myBar.addAdjustmentListener(this); text=new JTextField("",20); con. add(text);con.add(myBar); this.setVisible(true); } public void adjustmentValueChanged(AdjustmentEvent e){ MyScrollBar myBar=(MyScrollBar)e.getAdjustable(); text.setText(""+myBar.getValue()); } } public class Class1{ public static void main(String[]args){ MyWindow myWindow=new MyWindow("text5_4"); } } 36.小应用程序创建一个线程。例子使用容器类方法 getGraphics()获得 Graphics 对象,给线程作为画笔使用。请写出 该程序中这个线程的工作内容。 import java.applet.*;import java.awt.*; public class Class1 extends java.applet.Applet implements Runnable{ Thread redBGraphics redP int rx=0,ry=0; public void init(){ setSize(250,200); redBall =new Thread(this); redPen=getGraphics(); redPen. setColor(Color.red); setBackground(Color.gray); } public void start(){ redBall.start(); } public void run(){ while(true){ if(Thread.currentThread()==redBall){ rx=(int)(80*Math.random()); ry=(int)(80*Math.random()); red Pen.setColor(Color.red); red Pen.fillOval(100+rx,100+ry,10,10); try{redBall.sleep(500);} catch(InterruptedException e){} redPen.setColor(Color.gray); redPen.fillOval(100+rx,100+ry,10,10); } } } } 六、程序设计题(本大题共 2 小题,每小题 6 分,共 12 分) 37.编写一个方法 halfArray(),要求该方法有一个元素类型为 int 的数组参数,方法返回一个新数组,新数组的长 度与参数数组的长度相同,而新数组元素的值是参数数组各元素的一半。 38.一个 Java 小应用程序,界面有三个文本框和两个按钮,前两个文本框用于输入整数,第三个文本框用于输出 结果。两个按钮分别表示加和减运算。当前两个文本框输入整数后,点击相应按钮,程序就将计算结果输出在第三 个文本框中。以下是程序的大部分,其中监视按钮事件的方法未给出,试编写处理按钮事件的方法。 注:这里是给定部分的程序,你要编写的是 actionPerformed(ActionEvent e)方法。 import java.applet.*;import javax.swing.*; import java.awt.*; import java.awt.event.*; class Panel1 extends JPanel{ JTextField text1, text2, text3;JButton addButton,subB Panel1(){ text1=new JTextField(10);text2=new JTextField(10); text3=new JTextField(10);setLayout(new GridLayout(5,1)); addButton=new JButton("加");subButton=new JButton("减"); add(text1); add(text2); add(text3); add(addButton); add(subButton); } } public class Classl extends Applet implements ActionListener{ Pane1 public void init(){ setSize(100,200); panel=new Panel1();add(panel); (panel.addButton).addActionListener(this); (panel.subButton). addActionListener(this); } public void actionPerformed(ActionEvent e){//这里是你要编写的代码2008 年 10 月全国自考 Java 语言程序设计(一)真题答案 一、单项选择题 1:参考答案:D 参考解析:(P8)本题考核知识点是 Java 语言标识符命名规则。 Java 语言标识符可以按以下规则任意命名: ①由字母(包括英文字母、下划线字符、美元字符、文字字符) 和数字组成。 ②限定标识符的第一个字符不能是数字字符。 选项 D 答案第一个字符是数字字符。 2:参考答案:A 参考解析:(P14)本题考核知识点是 Java 算术运算符 ――“/” 。 “/” 为除法运算符, 当除数和被除数均为整数类型数据时, 则结果也是整数类型数据。 所以当 x=53 时, x/2=26。 3:参考答案:B 参考解析:(P46)本题考核知识点是实例变量、类变量、局部变量。 类的成员变量分为实例变量和类变量。在定义成员变量时,用关键字 static 修饰的是类变量,定义时未用 static 修饰的是实例变量。类变量是类的所有对象共享的成员变量,一个类变量在类中只有一个,它属于整个类,而不 属于类的某个对象。引用类变量的途径有两条, 或通过类, 或通过对象。 类的方法体中定义的变量称为局部变量, 方法参数也属于局部变量。 4:参考答案:C 参考解析:(P77)本题考核知识点是 StringTokenizer 类。 java.util 包中的类 StringTokenizer 用于语言符号(单词)的分析,分析出字符串中的单词。另外还有命名的习 惯约定(行业习惯,不是规定) :一般变量名、方法名用小写英文字母开头,类名首字母用大写字母,若命名由若 干个单词组成,后面的每个单词用大写开头;文字和常数全用大写字母命名;包名全部用小写字母。 5:参考答案:D 参考解析: (P91)本题考核知识点是 JFrame 类和关键字 super。在用 Swing 编写 GUI 程序时, 通常不直接用 JFrame 创建窗口对象,而用 JFrame 派生的子类创建窗口对象,在子类中可以加入窗口的特定要求和特别的内容,这时可 以使用超类的构造方法完成窗口的标题设置即 super(s)。选项 C 完整的使用形式可以这样: JFrame myWin=new JFrame(s)//创建 JFrame 窗口对象 myWin,标题是 s 但这样不符合本题题干“为 程序的子窗口设定标题”的要求。 6:参考答案:A 参考解析:(P118) 7:参考答案:B 参考解析:(P137)本题考核知识点是字型要素。 Java 的文字字型有三个要素:字体、风格和字号。常用的字体有 Times New Roman、 Symbol、 宋体和楷体等。 常用的风格有正常、 粗体和斜体, 分别用三个常量表示: Font.PLAIN、 Font.BOLD 和 Font.ITALIC,风格可以组合使用。字号是字的大小,单位是磅。 8:参考答案:D 参考解析:(P162)本题考核知识点是多线程。 在 Java 中实现多线程一般情况下是先声明 Thread 类的子类,在子类中重载 run()方法,然后创建这个子类的实 例,让线程调用 start()方法。 9:参考答案:C 参考解析:(P175)本题考核知识点是输入输出流。 为 Java 的 8 位字节流数据的读和写操作提供支持的类分 别是 FileInputStream 类和 FileOutputStream 类,它们分别是 InputStream 类和 OutputStream 类的子类;为 Java 的 16 位 Unicode 字符流数据的读和写操作提供支持的类分别是 FileReader 类和 FileWriter 类,它们分别是 Reader 类和 Writer 类的子类。 10:参考答案:A 参考解析:(P191)本题考核知识点是 Java 网络编程。 要接收和发送信息需用 URLConnection 类,程序获得一个 URLConnection 对象,相当于完成对指定 URL 的一 个 HTTP 连接。程序有了 URLConnection 对象后,就可使用 URLConnection 类提供的方法获得流对象和实现网络 连接。 二、填空题 1:参考答案:(P5)Applet(JApplet)类的子类 [解析]本题考核知识点是小应用程序。 一个小应用程序必须定义成一个 Applet 类的子类或 JApplet 类的子类。 试题内容:一个小应用程序必须定义成一个_____。 2:参考答案: [解析](P16)试题内容:用条件运算符构造一个表达式:goal 等于 10 时,表达式的值为&对了!&,否则,表达式的值为&错 了!&。这个表达式是_____。 3:参考答案:(P40)数据(属性)和方法(函数) [解析]本题考核知识点是类的概念。 类的每个对象都有自己的标识,但它们具有相同的一组属性和提供相同的一组方法。 试题内容:类是对一组相同对象的描述,类概括了同类对象的共有性质:_____。 4:参考答案:(P45)回收内存 [解析]本题考核知识点是数组。 Java 语言根据相应类型变量采用直接访问还是间接访问,把类型分成基本类型和引用类型,数组类型和类类型 是引用类型。数组进行整体赋值,其实是数组首地址的赋值,原来地址空间会自动释放。 试题内容:设有数组 a 和 b 的定义如下: int []a={1,2,3};int []b={4,5,6} …… 执行以下代码&a=b;&,除了完成赋值操作之外,引起系统额外要做的工作是_____。 5:参考答案:(P100)CardLayout [解析]本题考核知识点是布局设计。 常用的布局类:FlowLayout 为依次放置组件;BorderLayout 将组件放置在边界上; CardLayout 将组件像扑克牌一样叠放,而每次只能显示其中的一个组件;GridLayout 将显示区域按行、列划分 成一个个大小相等的格子,组件依次放入这些格子中;GridBagLayout 能进行更精细的位置控制。 试题内容:_____布局使容器的多个组件拥有同一个显示空间,某一时刻只能显示一个组件。 6:参考答案:(P127)MouseListener 我的答案: 试题内容:Java 语言为处理鼠标事件提供两个接口:_____接口和 MouseMotionListener 接口。 7:参考答案:(P140)黄色 [解析]本题考核知识点是绘图模式。 当绘图模式设置为异或模式时,用背景色绘图出现的是异或的颜色,重画一个图形将清除图形。 试题内容:某个绘图方法设置成&异或模式&绘图,并用黄色作为异或模式设定的绘图颜色。如果当时背景色为 红色,并用红色绘制线段,则线段的实际颜色是_____。 8:参考答案:(P161)run() [解析]本题考核知识点是多线程。 Java 程序实现多线程应用有两种途径:一是继承 Thread 类声明 Thread 子类,用 Thread 子类创建线程对象。二 是在类中实现 Runnable 接口,在类中提供 Runnable 接口的 run()方法。无论用哪种方法,都需要 Java 基础类库 中的 Thread 类及其方法的支持。程序员能控制的关键性工作只有两个方面,一是编写线程的 run()方法;二是 建立线程实例。 试题内容:程序员用 Java 语言编写多线程应用程序,程序员能控制的关键性工作有两个方面:一是编写线程 的_____方法;二是建立线程实例。 9:参考答案:(P179)FileWriter [解析]本题考核知识点是缓冲式输出。 实现缓冲式输出,需要将 FileWriter 对象接到 BufferedWriter 对象上,对 BufferedWriter 对象使用 write()方法就 能实现缓冲式输出。 试题内容:BufferedWriter 类是提供缓冲式输出的类。程序需要先创建 _____对象,再利用这个对象创建 BufferedWriter 对象。 10:参考答案:(P193)Socket [解析]本题考核知识点是 Java 网络编程。 Java 语言在实现 C/S 模式中,套接字分为两类,在 Server 端使用 ServerSocker 类,在 Client 端使用 Socket 类。 试题内容:在 Java 语言中,客户端使用的套接字类是_____。 三、简答题 (本大题共 6 小题,每小题 3 分,共 18 分) 1:参考答案:(P15)(x=2)!=(y=3)或(x=2&&y!=3)||(x!=2&&y!=3)我的答案: 2:参考答案:(P57)Student s1=new Person(); Undergraduate ug1=new Person(); Undergraduate ug2=new Student(); [解析]本题考核知识点是类之间的 is-a 关系。在两个相关的类之间,可能会有 is-a 和 has-a 关系。若类 A 是 继承扩展类 B,则子类 A 和超类 B 之间是 is-a 关系,即类 A 是一个类 B。这种情况下,A 类对象一定可以是 B 类类型,因为 B 类的所有成员 A 类也有。也就是子类对象可以是超类类型。语句 B b=new A()是正确的,A a=new B()是错误的。 3:参考答案:(P102)为对象添加监视器的方法是 addActionL类必须实现的方法是 public void actionPerformed(ActionEvent e)。 [解析]本题考核知识点是文本框输入结束动作事件(回车) 。 文本框输入结束动作事件相应的监视器接口为 ActionListener,要实现的接口方法是 actionPerformed(),添加监 视器的方法是 addActoinListener()。 4:参考答案:(P140)g.drawLine(20,30,120,30);或 g.drawLine(120,30,20,30); [解析]本题考核知识点是画线段。 方法中有四个参数分别表示线段的两个端点坐标,当两个端点坐标相同时,将画出一个点,而不再是线段。 5:参考答案:(P175)import java.io.*; [解析]本题考核知识点是文件输入输出流。 实现输入输出操作的类库在 java.io 包中。包中有一组支持打开流、向流写数据、从流读取数据和关闭流等操作 的类,要使用这些类,程序必须导入 java.io 包。 6:参考答案:(P199)与某个数据库建立连接;向数据库发送 SQL 语句;处理数据库返回的结果。 [解析]本题考核知识点是 java 数据库编程基础。 Java 数据库连接 JDBC 由一组用 Java 语言编写的类和接口组成,JDBC 是 Java 程序与数据库连接的 API。它可 以做三件事情。 四、程序填空题 (本大题共 5 小题,每空 2 分,共 20 分) 1:参考答案:n%10 return c [解析]本题考核知识点是%运算符和 return 语句。 方法中 d 为循环分离出整数 n 的每一位数字(每次取 n 的个位数字,n 也在变化:n/=10) ,在找出最大的数字 后存入了变量 c 中,因方法有返回值类型为 int,所以必须有 return 语句,要返回最大数字。, 2:参考答案:getText() sum+=a[i]或 sum=sum+a[i] [解析]本题考核知识点是图形界面设计中按钮事件方法的编写。 获取文本框中的内容使用的方法是 getText(),方法名首字母均小写,后面单词首字母大写。获取整数序列后, 使用单词分析器分解出每个整数(有类型转换过程)存入数组 a 中,然后对所有整数进行求和。, 3:参考答案:JMenuItem getActionCommand [解析]本题考核知识点是菜单。 生成菜单条是用类 JMenuBar 的构造方法 JMenuBar(),把菜单条放入 JFrame 窗口中用 setJMenuBar()方法;生 成菜单用类 JMenu 的构造方法 JMenu()或 JMenu(String s);生成菜单项用类 JMenuItem 的构造方法 JMenuItem()或 JMenuItem(String s)。在菜单事件中获得事件源的 方法是 getSource(),获得事件源文字信息的方法是 getActionCommand()。 4:参考答案:Graphics repaint()或 update() [解析]本题考核知识点是小应用程序中 paint()和 repaint()方法的使用。 paint()方法需要 Graphics 类型参数,当单击鼠标时,要在 paint()方法中再次显示图片,可以调用 repaint()方法, 使程序先清除 paint()运行的结果,再运行 paint();也可以调用 update()方法,该方法会使系统自动调用 repaint() 方法。 5:参考答案:synchronized notify() [解析]本题考核知识点是线程的互斥和同步。 在 Java 语言中,使用关键字 synchronized 定义临界段,能对共享对象的操作上锁,使得某一时刻只允许一个线 程使用这个共享对象。但是为了同步,可在临界段中使用 wait()、notify()和 notifyAll()方法。wait()让线程一直 等待,notify()方法通知第一个处于等待的线程结束等待。notifyAll()方法使所有处于等待的线程都结束等待, 重新竞争 CPU。 五、程序分析题 (本大题共 5 小题,每小题 4 分,共 20 分) 1:参考答案:yuan Circle 62.8(2 分) yuan Area 314.0(2 分)我的答案: 2:参考答案:程序获得当前日期,将日期的字符串表示输出; 分)截取日期字符串中从第 11 位开始到字母 (2 ‘C’之前的部分字符串,并输出。 分) (2 3:参考答案: 在第一个文本框输入数据,输入结束(回车)后, 分)在第二个文本框输出该整数的平方。 分) (2 (2 4:参考答案: 滑动滚动条的滑块,在文本框显示块位置对应的数值。 5:参考答案:随机位置显示一个小圆,程序采用背景色重画的办法,清除前一次显示的小圆。 [解析]本题考核知识点是图形绘制和线程综合应用。 在 run()方法中随机产生一个坐标点,以此为左上角坐标,红色填充一个小圆形区域,500 毫秒后,用背景色填 充同一个小圆形区域,使红色小圆形区域消失,马上又随机产生一个坐标点,再红色填充,再消失,循环不止。 我的答案: 六、程序设计题 (本大题共 2 小题,每小题 6 分,共 12 分) 1:参考答案:int [] halfArray(int [] a){(1 分) int [] b=new int[a.length];(2 分) for(int k=0;k<a.k++){(2 分) b[k]=a[k]/2; }(1 分) } [解析]本题考核知识点是面向对象程序设计中的方法设计。 编写方法,需要确定方法名,已给出 halfArray;再确定参数个数及类型,要求是一个 int 型数组参数即 halfArray(int []);再就是确定方法返回值类型,要求返回一个新数组,新数组元素类型要确定下来,根据题意,新数组 元素是参数数组相应元素的一半,这一半应该可能是小数,所以方法头应该为 float[]halfArray(int [])而不应该是 int [] halfAray(int []),方法体中的一半也应该是除以 2.0。并转换成 float 类型,方法体定义的数组 b 也应该是 float 类型。或 者返回值类型和数组 b 的类型都定义成 double 类型。 2:参考答案:long n1,n2;(1 分) if(e.getSource()=(panel.addButton)){(3 分) n1=Long.parseLong(panel.text1.getText()); n2=Long.parseLong(Panel.text2.getText()); panel.text3.setText(String.valueOf(n1+n2)); } else if(e.getSource()=(panel.subButton)){(2 分) n1=Long.parseLong(panel.text1.getText()); n2=Long.parseLong(panel.text2.getText()); panel.text3.setText(String.valueOf(n1-n2)); } 注:将 panel.text1 写成 text1,panel.text2 写成 text2 整体扣 1 分。 [解析]本题考核知识点是图形界面设计、JPanel、JTextField、JButton 及其事件的处理。 在方法体中的代码类似于 34 小题。容器的嵌套不要忽略了。全国 2009 年 1 月 Java 语言程序设计(一)试题课程代码:04747 一、单项选择题(本大题共 10 小题,每小题 1 分,共 10 分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或 未选均无分。 1.下列字符组合不能作为 Java 整型常量的是( A.078 B.0x3ACB )C.5000 D.0x3ABC 2.以下程序代码的输出结果是( ) int x = 10; while (x & 7) { System.out.print(&*&); x--;} A.** C.* B.*** D.****3.设类 U 声明,及对象 u 和 v 的定义如下: class U{ int x, U(int a, int b){x= y =} void copy(U a){ x = a.x; y = a.y;} } U u = new U(1, 2), v = new U(2, 3); 在以下供选择的代码中,可能引起系统回收内存的是( A.u.x=v.y;u.y=v.x; B.u=v; C.u.copy(v); D.v.copy(u); 4.设有以下代码: String s l=&123&; String s2=&123&; String s3=new String(&123&); 则表达式 s1==s2 和 s1==s3 的值分别是( A.true,true B.false,false C.true,false D.false,true 5.以下关于 AWT 与 Swing 之间关系的叙述,正确的是( A.Swing 是 AWT 的提高和扩展 B.在写 GUI 程序时,AWT 和 Swing 不能同时使用 C.AWT 和 Swing 在不同的平台上都有相同的表示 D.AWT 中的类是从 Swing 继承的 6.在以下 Swing 组件中,能为它指定布局管理器的是( A.JScrollBar 对象 B.JMenuBar 对象 C.JComboBox 对象 D.JDialog 对象 ) ) ) )7.一般的绘图程序要定义一个 JPanel 子类。在 JPanel 子类中还要重定义一个方法,在这个方法中调用绘图方 法,绘制各种图形。要重定义的方法是( A.paint() B.paintComponent() C.repaint() D.update())8.用 Runnable 接口实现多线程的主要工作是()A.声明实现 Runnable 接口的类,在类内实现 run()方法,让线程调用 start()方法。 B.声明实现 Runnable 接口的类,在类内实现 run()方法,在类内声明线程对象,在 init()方法中创建新线程,启 动新线程。 C.声明实现 Runnable 接口的类,在类内实现 run()方法,在类内声明线程对象,在 Init()方法或 start()方法中创 建新线程,在 start()方法中启动新线程。 D.声明实现 Runnable 接口的类,在类内实现 run()方法,在 init()方法中创建新线程,在 start()方法中启动新线 程。 9.程序如果要按行输入输出文件的字符流,最合理的方法是采用( A.BufferedReader 类和 BufferedWriter 类 B.InputStream 类和 OutputStream 类 C.FileReader 类和 FileWriter 类 D.File_Reader 类和 File_Writer 类 10.在编写访问数据库的 Java 程序中,要用到 DriverManager 类。该类的作用是( A.存储查询结果 B.处理与数据库的连接 C.在指定的连接中处理 SQL 语句 D.处理驱动程序的加载和建立数据库连接 二、填空题(本大题共 10 小题,每小题 2 分,共 20 分) 请在每小题的空格中填上正确答案。错填、不填均无分。 11.Java 程序的字节码文件的扩展名是_________。 class ) )12.构造一个 Java 表达式:y/x&5,并且 x!=0。这个表达式是_________。y/x&5 && x!=0 13.在类声明之前用_________修饰,声明类是不能被再继承的类,即它不能再有子类。final 14.设有字符串定义: String s=&ABCDABCD&; 则表达式 s.indexOf(&B&)的值是_________。 115. 在 实 现 接 口 ActionListener 的 方 法 actionPerformed() 中 , 常 用 的 有 两 个 获 得 事 件 源 的 方 法 , 它 们是 getActionCommand()和_________。getSource() 16.使用单选按钮的方法是将一些单选按钮用_________对象分组,使同一组内的单选按钮只允许一个被选中。 ButtonGroup 17.在 Java 语言中,用类 Font 对象设置字型。如果要设置的字型是:细明体、正常风格(Font.PLAIN),12 磅字 号,构造这样要求的 Font 对象 fnA 的代码是_________。Font fnA=new Font(“细明体”,Font.PLAIN.12) 18.线程从阻塞状态恢复到就绪状态,有三种途径:自动恢复、用 resume()方法恢复和用_________方法恢复。 notify()或 notifyAll() 19.为普通的 8 位字节流文件读和写操作提供支持的类是_________。InputStream OutputStream 20.Connection 类是 java.sql 包中用于处理与数据库连接的类。 Connection 对象是用来表示_________的对象, Java 程序对数据库的操作都在这种对象上进行。数据库连接 三、简答题(本大题共 6 小题,每小题 3 分,共 18 分) 21.请写出表示 year 年是闰年的 Java 表达式。闰年的条件是:每 4 年一个闰年,但每 100 年少一个闰年,每 400 年又增加一个闰年。(year%4= =0) && (year%4!=0)||(year%400= =0) 22.请写出在类的方法的定义之前,加上修饰字 public、private 的区别。 Public 修饰的方法为公用方法,任何类的方法都可以访问他 Private 修饰的方法,本类内部可以访问 23.请写出将文本区 text 放置于滚动面板 jsp,并将滚动面板 jsp 添加到 JFrame 窗口 myFrame 的 Java 语句。 TextArea text=new TextArea(); JScrollPane jsp=new JScrollPane(text); myFrame.getContentPane().add(jsp); 24.要用 Graphics2D 类的方法画一个图形,首先要把参数对象 g 强制转换成 Graphics2D 对象;然后,用图形类 提供的静态方法 Double()创建一个图形对象;最后,以图形对象为参数调用 Graphics2D 对象的 draw()方法绘 制这个图形。请写出用这样的方法绘制一条线段的程序段,线段的两个端点分别是(10.0,10.0)和(30.0,30.0)。 Graphics2D g2d=( Graphics2D) Line2D line=new Line2D.Double(10,20,30,40); G2d.draw(line)25.请写出字符流数据与字节流数据的区别。(P.175) 26.请写出 URLConnection 类在编写 Java 网络应用程序中的作用。 URLConnection 类完成流对象和实现网络连接四、程序填空题(本大题共 5 小题,每小题 4 分,共 20 分) 27.方法 int sigmaDigit(int n)的功能是求出十进制整数 n 的各位数字之和。例如,n=1234,该方法的返回值是 10。 static int sigmaDigit( int n ) { int sum = 0, while( n & 0 ){ d=n% 10; _________; n/= 10; } _________; } 28.以下小应用程序能响应鼠标按动的事件,当鼠标在正文区的某个位置被点击时,就在该位置显示一个记号 “× ,程序限制最多保留最新 20 个位置。 ” import java.applet.*; import java.awt.*; import javax.swing.*; import java.awt.event.*; class MyPanel extends JPanel { public void print(Graphics g, int x, int y)( g.setColor(Color.red); g.drawLine(x-5, y-5, x+5, y+5); g.drawLine(x+5, y-5, x-5, y+5); } } class MyWindow extends JFrame implements MouseListener{ final int MaxMarks = 20; int currentMarks = 0, markCount = 0; Point marks[] = new Point[MaxMarks]; MyP MyWindow(){ this.setLocation(100, 100); this.setSize(300, 300); Container con = this.getContentPane(); panel = new MyPanel(); con.add(panel); return sum sum+=d _________(this); this.setVisible(true); } public void paint(Graphics g){addMouseListenerg.clearRect(0,0, this.getWidth(), this.getHeight()); for(i =0;i & markC i++) { _________(g, marks[i].x, marks[i].y); } } public void mousePressed(MouseEvent e){ public void mouseReleased(MouseEvent e){ } public void mouseEntered(MouseEvent e){ public void mouseExited(MouseEvent e){ } public void mouseClicked(MouseEvent e){ marks[currentMarks] = new Point(e.getX(), e.getY()); if(markCount & MaxMarks)markCount++; currentMarks = (currentMarks+ 1)%MaxM repaint(); } } public class Class1 extends Applet { public void init(){ MyWindow myWndow = new MyWindow(); } } 29.这是一个处理选择项目事件的子窗口类。窗口中有 2 个选择框,当选中某个选择框时,文本框将显示选择 框对应的信息。 class MyWindow extends JFrame implements ItemListener { JTextF JCheckBox boxl, box2; } } print MyWindow(String s) { _________; Container con = this.getContentPane(); this.setLocation(100, 100); text = new JTextField(10); box1 = new JCheckBox(&A 计算机&, false); box2 = new JCheckBox(&B 计算机&, false); con.setLayout(new GridLayout(3, 2)); con.add( new JLabel(&计算机产品介绍&, JLabel.CENTER)); add(new JLabel(&计算机 2 选 1&, JLabel.CENTER)); con.add(box1); con.add(box2); con.add(text); this.setSize(400, 200); super(s)box1 .addItemListener(this); box2.addItemListener(this); this.setVisible(true); this.pack(); } public void itemStateChanged( _________e){ if(e.getItemSelectable() == box1) { text. setText(&A 公司生产&); } else if(e.getItemSelectable() == box2) { text. setText(&B 公司生产&); } } } 30.这是一个播放幻灯片的小应用程序中的 paint()方法。设幻灯片已由小应用程序的 init()方法装入内存,并存 放于 myImage 数组中,幻灯片的张数放于变量 num 中,paint()方法要播放的幻灯片号是 int currentImage = 0; final int num = 30; Image [ ] myImage = new _________ [num]; ?? public void paint(Graphics g) { if ((mylmage[currentImage]) != null) g. _________ (myImage[currentImage], 10, 10, drawImage Image ItemEvent myImage [currentImage].getWidth(this), myImage [currentImage].getHeight(this), this); } 31.以下定义的类 ShareData 用于管理多个线程共享数据 val。为了保证对共享数据 val 修改的完整性,线程对 val 的操作需要互斥,类 ShareData 中定义的方法 modiData()就是供共享 val 的线程修改 val 的方法。程序共有 20 个线程共享 val,有些减少 val,有些增加 val。 public class Class1 { public static void main(String args[]){ ShareData mrc = new ShareData(50); Thread[] aThreadArray = new Thread[20]; System.out.println(&\t 刚开始的值是:&+mrc.getVal()); System.out.println(&\t 多个线程正在工作,请稍等!&); for(int i = 0; i & 20; i++) { int d = i % 2 == 0 ? 50 : -30; aThreadArray[i] = new Thread(new MyMultiThreadClass(mrc, d)); aThreadArray[i].start(); } WhileLoop ://等待所有线程结束 while(true){ for(int i = 0; i & 20; i++) if(aThreadArray[i]. } System.out.println(&\t 最后的结果是: &+mrc.getVal()); } } class MyMultiThreadClass implements Runnable { ShareData UseI _________ ())continue WhileL isAlive()MyMultiThreadClass(ShareData mrc, int d) { UseInteger = } delta = public void run() { for(int i = 0; i & 1000; i++) { UseInteger.modiData(delta); try {Thread.sleep(10) ;//做一些其他的处理 }catch(InterruptedException e){ } } } } class ShareData { ShareData(int initValue){val = initV } int getVal(){} private void putVal(int v){val =} _________ void modiData(int d){ putVal(getVal() + d); } } 五、程序分析题(本大题共 5 小题,每小题 4 分,共 20 分) 32.阅读下列程序,请写出该程序的输出结果。 class A { int x, A(int a, int b) { x= } } public class sample { public static void main(String args[]) { A pl, p2; p2 = new A(12, 15); p1 = p2; p2.x++; y= synchronizedSystem.out.println(&p1.x=& + p1 .x); } } p1.x=13 33.阅读下列程序,请写出调用 pascal(4)的输出结果。 static void pascal(int n) { int pas[]; pas = new int[n]; pas[0] = 1; System.out.println(pas[0]); for (int i = 2; i &= i++) { /* 由存储在 pas 中的原来内容生成新内容*/ pas[i - l] =1; for (int j = i- 2;j & 0; j--) pas[j] = pas[j] + pas[j - 1 ]; for (int j = 0; j & j++) System.out.print(pas[j] +& &); System.out.println(); } }1 1 1 1 1 2 3 1 3 134.阅读下列程序,请用示意图画出程序运行时呈现的界面。 import java.applet.*; import java.awt *; import javax.swing.*; class MyPanel extends JPanel { JB JL MyPanel(String s1, String s2) { this.setLayout(new GridLayout(2, 2)); button = new JButton(s1); label = new JLabel(s2, JLabel.CENTER); add(button); add(label); } } public class Class1 { public static void main(String args[]) { JFrame mw = new JFrame(&一个示意窗口&); mw.setSize(400, 250); Container con = mw.getContentPane(); con.setLayout(new BorderLayout()); MyPanel panel1, panel2; panel1 = new MyPanel(&按钮 1& ,&标签 1&); panel2 = new MyPanel(&按钮 2&, &标签 2&); JButton button = new JButton(&开始按钮&); con.add(panel1, &North&);con.add(panel2, &South&); con.add(button, &Center&); mw.setVisible(true); } } add(new JLabel());35.阅读下列程序,请回答以下问题: (1)程序要求在文本框 text 中输入的内容是什么? (2)辅助文本区 showArea 组件的作用是什么? 需要读取的文件 URL 地址 显示读取的文件内容 (3)如何使程序开始下载网络文本文件? (4)程序采用什么输入方式下载网络文件?点击下载按钮 使用字节流完成下载import java.net.*;import java.awt.*; import,java.io.*; import javax.swing.*;import java.awt.event.*; public class Class1{public static void main(String args[]) { }.new ConnectNet(&读取网络文本文件示意程序&);}class ConnectNet extends JFrame implements ActionListener{ JTextField text=new JTextField(30); JTextArea showArea=new JTextArea(); JButton b=new JButton(&下载&);JPanel p=new JPanel(); ConnectNet(String s){ super(s);Container con=this.getContentPane(); p.add(text);p.add(b); JScrollPane jsp=new JScrollPane(showArea); b.addActionListener(this); con.add(p,&North&);con.add(jsp,&Center&);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(500,400);setVisible(true); } public void actionPerformed(ActionEvent e){ String urlName=text.getText(); try{ URL url=new URL(urlName);//由网址创建 URL 对象 URLConnection tc=url.openConnection();//获得 URLConnection 对象 tc.connect();//设置网络连接 InputStreamReader in=new InputStreamReader(tc.getInputStream()); BufferedReader dis=new BufferedReader(in); String inLine; while((inLine=dis.readLine())!=null){showArea.append(inLine+&\n&);} dis.close(); }catch(MalformedURLException e2){e2.printStackTrace();} catch(IOException e3){ e3.printStackTrace();} } } 36..阅读下列程序,请写出该程序的功能。 import java.applet.*; import java.awt.*;public class Class1 extends java.applet.Applet implements Runnable { Thread myThread = public void start() { setSize(500, 400); if (myThread == null) { myThread = new Thread(this); } } public void run() { while (myThread != null) { try { myThread.sleep(500); } catch (InterruptedException e) { } myThread.start(); repaint(); } } public void paint(Graphics g) { int x = (int)(400*Math.random()); int y = (int)(300*Math.random()); g.setColor(Color.red); } } 随机绘制外切矩形为 10 红色的圆 六、程序设计题(本大题共 2 小题,每小题 6 分,共 12 分) 37.编写数组复制方法。该方法从已知平衡的两维数组的左下角复制出一个非平衡的三角二维数组。设复制数 组方法的模型为: public static double[][] leftDownConer(double[][]anArray)public static double[][] leftDownConer(double[][]anArray){ int l1= anArray. int l2=anArray[0]. double temp[][]; if(l1&=l2){ temp=new double[l1][]; for(int i=0;i&l1;i++){ temp[i]=new double[i+1]; for(int j=0;j&i+1;j++) temp[i][j]=anArray[i][j]; } }else{ temp=new double[l2][]; for(int i=0;i&l2;i++){ temp[i]=new double[i+1]; for(int j=0;j&i+1;j++) temp[i][j]=anArray[l1-l2+i][j]; } } }g.fillOval(x,y, 10, 10); 38.设计实现以下形式布局的 Java 小应用程序。注 1:其中空白格是文本框,用于输入对应的内容。 注 2:这里给出的是程序的一部分,你要编写的是方法 MyWindow(String s)。 import java.applet.*; import javax.swing.*; import java.awt.*; class MyWindow extends JFrame{ JTextField textl,text2,text3,text4; public MyWindow(String s){//这个方法是你要编写的super(s); Container con=getContentPane(); con.setLayout(new GridLayout(2,4)); JLabel label1=new JLabel(&学 JLabel label2=new JLabel(&姓 号&); 名&);JLabel label3=new JLabel(&考试成绩&); JLabel label4=new JLabel(&平时成绩&); text1=new JTextField(); text2=new JTextField(); text3=new JTextField(); text4=new JTextField(); con.add(label1); con.add(text1); con.add(label2); con.add(text2); con.add(label3); con.add(text3); con.add(label4); con.add(text4); this.setVisible(true);} } public class Class1 extends Applet{ MyWindow myWindow; public void init(){ myWindow=new MyWindow(&一个小应用程序&); } } 全国 2009 年 10 月高等教育自学考试 Java 语言程序设计(一)试题 课程代码:04747一、单项选择题(本大题共 10 小题,每小题 1 分,共 10 分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未 选均无分。 1.下面供选字符序列中,不属于 Java 语言关键字的是( ) ... A.goto B.null C.false D.native 2.以下程序代码的输出结果是( ) int x=73;System.out.println(x&&1) ; A.36 B.36.5 C.37 D.true 3.Java 语言中,在类定义时用 final 关键字修饰,是指这个类( ) A.不能被继承 B.在子类的方法中不能被调用 C.能被别的程序自由调用 D.不能被子类的方法覆盖 4.以下是关于字符串运算的代码,执行该代码段的输出结果是( ) String s=″″,sl,s2; sl=s.substring(2) ;s2=s.substring(2,5) ;System.out.println(s1+s2) ; A.0122345 B. C.012234 D. 5.以下是关于 FlowLayout 布局组件排列顺序的叙述,正确的是( ) A.从上到下排列 B.从左到右排列 C.从下到上排列 D.从右到左排列 6 . 程 序 执 行 方 法 showOpenDialog ( ) 能 打 开 “ 打 开 文 件 对 话 框 ” , 如 果 该 方 法 的 返 回 值 是 , JFileChooser.APPROVE_OPTION,则用户执行的动作是( ) A.对话框非正常关闭 B.按下“打开/保存”按钮 C.按下“撤销”按钮 D.重新输入了一个文件名 7.设已经有 Graphics2D 对象 g2d,Rectangle2D 对象 r,绘制对象 r 的代码是( ) A.g2d.draw(r) B.g2d.drawRect(r) C.r.draw() D.r.drawRect() 8.在以下供选择的方法中,能让线程从阻塞状态恢复到就绪状态的方法是( ) A.start() B.init() C.resume() D.run() 9.在以下供选择的方法中,不能用于文件随机访问的方法是( ) .. A.readChar() B.readLong() C.readInteger() D.writeChars() 10.某程序利用网址参数创建 URL 对象 url,接着希望利用对象 url 获得 URLConnection 对象,则这个 url 对象要调 用的方法是( ) A.connection() B.URLConnection() C.getConnection() D.openConnection() 二、填空题(本大题共 10 小题,每小题 2 分,共 20 分) 请在每小题的空格中填上正确答案。错填、不填均无分。 11.一个应用程序必须在某个类中定义的方法是______。 12.import 语句的格式是______。 13.在面向对象语言中,对象之间的交互通过______实现。 14.设有两个字符串对象 str1 和 str2,则表达式“strl==str2”的意义是判别字符串 strl 和 str2______。 15.一个基于 Swing 的应用程序可能在任何平台上都会有相同的______。 16.处理键盘事件的 Java 程序,要实现的接口是______。 17.Java 语言约定,坐标原点位于绘图区域的______。 18.Java 程序中,在临界段中使用______方法,使执行该方法的线程等待。 19.BufferedWriter 类对象能按行输入文件的内容,按行输入的方法是______。 20.在 java.net 包中有 InetAddress 类的定义,Java 程序中的 InetAddress 类对象存储的内容是______。三、简答题(本大题共 6 小题,每小题 3 分,共 1 8 分) 21.请写出实现计算 y=|x|的 if 语句。 22.以下代码定义了一个类,请指出其中三条不合法的代码行(行号参见注释) 。 class Test22{ //1 float u;static float v; //2 static void setUV(boolean f){ //3 u=fac1(f) ; //4 v=fac2(!f) ;} //5 static float facl(boolean f){return f?u:v;} //6 float fac2(boolean f){return f?v:u;} //7 } //8 23.在 java.awt.event 中,用来检测并对事件做出反应的模型涉及三种对象。请写出这三种对象。 24.写出设置 Font 对象 fn 的 Java 语句,要求 Courier 字体,BOLD 风格,18 磅字号,设调用对象的类型为 Graphics 的 g。 25.通过流的构造方法建立文件流对象,请写出创建输入输出文件流对象的两种常用构造方法。 26.当 Client 程序和 Server 程序需要通信时,可以用 Socket 类建立套接字连接,请写出双方实现通信的两种方式。 四、程序填空题(本大题共 5 小题,每空 2 分,共 20 分) 27.方法 int sigmaEvenNum(int[]a)的功能是求已知数组中偶数的个数。 static int sigmaEvenNum(int []a){ int s =0; for ( int i=0;______;i++ ) { if(______) s++; } } 28.某小应用程序窗口包含有文本区 dispArea,以及一个带文字“追加”的按钮。当点击这个按钮时,程序弹出一个 输入信息的对话框,并将对话框中输入的内容追加到文本区中。以下是其中相应“追加”按钮事件的方法。 public void actionPerformed(ActionEvent e){ if(e.______.equals(&追加&) ){ String result=(String)JOptionPane.showInputDialog(null,&请输入信息&, &输入对话框&,JOptionPane.PLAIN_MESSAGE, null, null,null) ; dispArea.______(result + & &); } } 29.以下程序段是选择项目事件处理程序的样例,一个由 3 个单选按钮组成的选择组被定义为一个面板子类 Panel, 当某个按钮被选中时,按钮监视程序在类 MyWindow 的一个文本框中输出某个按钮被选中的字样。以下是类 Panel 的定义。 class Panel extends JPanel implements ItemListener{ static JRadioButton box[]; ButtonG Panel(String radioNameList[]) { box=new JRadioButton[radioNameList.length]; setLayout(new GridLayout(1, radioNameList.length) ); g=new ButtonGroup(); for(int i=0;i&radioNameList. i++){ box[i] = new JRadioButton(______,false); g.add(box[i]);add(box[i]);box[i].addItemListener(this); } } public void itemStateChanged(ItemEvent e){ for(int i = 0; i & box. i++){ if(box[i]._______) { MyWindow.text.setText(box[i].getLabel()+&被选中!&); } } } } 30.用 getImage()方法和 drawImage()方法能加载和显示图像。以下程序加载的是 seattle.jpg 文件,并假定该 文件与包含这个小应用程序的 HTML 文件在同一个目录下。 import java.awt.*; import java.applet.*; public class SimpleImageLoad extends Applet{ I public void init() { img = getImage(______,&seattle.jpg&); } public void paint(Graphics g) { g.drawImage(img, 0, 0, ______); } } 31.以下程序段定义的类 ShareDataManager 用于管理多个线程共享数据 data。为了对 data 的取、存和修改操作保 持完整,多线程在 data 上的操作有互斥要求;另外,限制线程对 data 的修改不能让 data 为负数,所以多线程 在 data 上的操作还有同步要求。为此,程序为管理 data 上的操作定义成类,以下是管理共享数据 data 的类 ShareDataManager 的代码。 class ShareDataManager { ShareDataManager(int init){data = } public int getData(){} private void putData(int newValue){ data = newV} synchronized void modiData(int delta){ if (delta &= 0) {putData(getData()+ delta); } else { while (______&0) { try {wait(); } catch (InterruptedException e) { } } putData(getData()+ delta); } ______; } } 五、程序分析题(本大题共 5 小题,每小题 4 分,共 20 分) 32.阅读下列程序,请写出该程序的输出结果。 class Tree { private Sp public int birthY Tree(String n, boolean f, int y){ name = flower = birthYear = } public void setName(String n){name =} public String getName(){ } public void printTree(String str){ System.out.println(str); System.out.println(&Name:&+name); System.out.println(&Birth Year:&+birthYear); System.out.println(&Flower:&+flower); } } class PineTree extends Tree { public boolean coniferous = PineTree(String n, boolean f, int y, boolean c){super(n, f, y);coniferous = } public void printTree(String str){ super, printTree(str); System.out.println(&Coniferous:& + coniferous); } } class Test32 { public static void main(String []args){ Tree fOb = new Tree(&May Flower&, true, 1980); PineTree sOb = new PineTree(&Pine&, false, 2000, true); fOb.printTree(& fOb:&); sOb.printTree(&sOb:&); } } 33.阅读下列程序,请写出该程序的输出结果。 class Test33 { static void s (int b[ ], int k) { int i, j, for(i = 1;i& i++) { for(t = b[i], j = i-1; j &= 0 && t & b[j]; j--) b[j+l] = b[j]; b[j+ 1 ] = } } public static void main(String []args){ int i, a[] = {6, 12, 7, 11, 5 }; s(a, 5); for(i = 0;i& a. i++) System.out.print(a[i]+& &); System. out. Println(); } } 34.阅读下列程序,请写出该程序的功能。 import java.applet.*; import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Test34 extends Applet implements ActionListener { JTextF JP public void paint(Graphics g){ Graphics gc = panel.getGraphics(); gc.clearRect(0,0, panel.getWidth(), panel.getHeight() ); gc.setColor(Color.red); gc.fillOval(10, 10, r, r); } public void init() { text = new JTextField(10); panel = new JPanel(); setSize(200, 100); setLayout(new GridLayout(2,1) ); add(text); add(panel); text.addActionListener(this); } public void actionPerformed(ActionEvent e) { if (e.getSource() == text) { r = Integer.parseInt(text.getText() ); repaint(); } } } 35.阅读下列程序,请回答以下问题: (1)该程序的菜单条中共有几个菜单项? (2)单击哪个菜单项,可以打开一个对话框? (3)该对话框是强制型还是非强制型? (4)该对话框中显示的是什么内容? Import javax.swing.*;import java.awt.*; import java.awt.event.*; import java.util.*; class MyDialog extends JDialog { MyDialog(JFrame F, String s) { super(F, s, false); Date date = new Date(); String t = date.toString(); JLabel text = new JLabel(t); add(text); setSize(200,100); setVisible(true); } } public class MenuDemo extends JFrame implements ActionListener { JMenuB JM JMenuItem show, set, public MenuDemo() { menubar = new JMenuBar(); setJMenuBar(menubar); action = new JMenu(''操作'') ; menubar.add(action); show= new JMenuItem(''显示''), action.add(show); set = new JMenuItem(&设置&); action.add(set); action.addSeparator(); quit = new JMenuItem(&退出&); action.add(quit); show.addActionListener(this); set.addActionListener(this); quit.addActionListener(this); setSize(300,300); setVisible(true); } public void actionPerformed(ActionEvent e) { if(e.getSource() == show) {MyDialog diag = new MyDialog(this, &信息&);} else if(e.getSource()== set) { this.setTitle(&菜单演示&);} else if(e.getSource() == quit){ System.exit(0); } } public static void main(String[] args) {new MenuDemo();} } 36.阅读以下程序,请写出该程序的输出结果。 class CurrentThreadDemo { public static void main(String args[]) { Thread t = new Thread(); System.out.println(&Current thread&); t.setName(&My Thread&); System.out.println(&After name change&); try {for(int n = 3; n & 0; n--) { System.out.println(n); Thread.sleep(1000); } } catch (InterruptedException e) { System.out.println(&Main thread interrupted&); } } } 六、程序设计题(本大题共 2 小题,每小题 6 分,共 12 分) 37.编写方法 int searchMaxNumIndex(int[]a) ,寻找已知数组中最大数的下标并返回。 38.以下程序的界面有一个按钮 button、一个文本区 textA 和一个文本框 textF。程序运行时,在文本区中输入数字 序列,单击按钮,则在文本框中显示数字序列的和。以下是要求你编写的 actionPerformed(ActionEvent e)方 法的部分代码。 public void actionPerformed(ActionEvent e) { if (e.getSource() == button) { String s = textA.getText(); double sum =0; StringTokenizer fenxi = new StringTokenizer(s, & ,\n&); //请在以下位置编写代码全国 2009 年 10 月自学考试 Java 语言程序设计(一)试题_答案一、单项选择题(本大题共 10 小题,每小题 1 分,共 10 分) 1、C 2、A 3、A 4、D 5、B 6、B 7、A 8、C 二、填空题(本大题共 10 小题,每小题 2 分,共 20 分) 11、main( ) 12、import 包名.类名; 13、相互发送消息 14、是否引用同一个对象 15、外观与风格 16、KeyListener 17、左上角 18、wait( ) 19、readLine( ) 20、IP 地址和域名 三、简答题(本大题共 6 小题,每小题 3 分,共 18 分) 21、if(x&=0)y=x; else y=-x; 22、4,5,6 行错误 23、源对象、监视器对象、事件对象 24、Font fn=new Font(&Courier&,Font.BOLD,18); g.setFont(fn); 25、FileInputStream(String name) FileInputStream(File filename) FileOutputStream(String name) FileOutputStream(File filename) 26、流式 socket 和数据报式 socket。 四、程序填空题(本大题共 5 小题,每空 2 分,共 20 分) 27、i&a.length a[i]%2==0 28、 getActionCommand() append 29、 radioNameList[i] isSelected() 30、 getDocumentBase() this 9、C 10、D 31、 getData()+delta notify() 五、程序分析题(本大题共 5 小题,每小题 4 分,共 20 分) 32、 fOb: Name:May Flower Birth Year:1980 Flower:true(2分) sOb: Name:Pine Birth Year:2000 Flower:false Coniferous:true(2分) 33、 分) 34、 以文本框输入的数字为半径, 分)以(10,10)为左上角, 分)填充一个红色(1 分)的圆。 分) (1 (1 (1 35、 (1)3 个菜单项(1 分) (2)“显示”菜单项(1 分) (3)非强制型对话框(1 分) (4)显示当前事件(1 分) 36、 urrent thread(1 分) After name change(1 分) 3 2 1(2 分) 六、程序设计题(本大题共 2 小题,每小题 6 分,共 12 分) 37、 int searchMaxNumIndex(int[]a){ int i,maxI(1 分) for(i=maxIndex=0;i&a.i++){(2 分) if(a[i]&a[maxIndex])(1 分) maxIndex=i;(1 分) } return maxI(1 分) } 38、 int n=fenxi.countTokens();(1 分) int i=0;(1 分) while(fenxi.hasMoreTokens()){(1 分) String s1=fenxi.nextToken();(1 分) sum=sum+Double.valueOf(s1).doubleValue();(1 分) } textF.setText(&&+sum);(1 分)全国 2010 年 1 月自考 Java 语言程序设计(一)试题 课程代码:04747一、单项选择题(本大题共 10 小题,每小题 1 分,共 10 分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未 选 均无分。 1.在下述字符串中,不属于 Java 语言关键字的是 ( ... A.float C.java B.new D.return B ) C )2.Java 语言中数值数据的类型能自动转换,按照从左到右的转换次序为 ( A. byte→int→short→long→float→double B. byte→short→int→long→float→double C. byte→short→int→float→long→double D. short→byte→int→long→float→double 3.在以下供选择的概念中,不属于面向对象语言概念的是 ( ... A.消息 C.继承 B.模块 D.多态性 D ) B )4.在下述 Java 语言语句中,错误的创建数组的方法是 ( .. A.int intArray [ ]; intArray=new int[5]; B.int intArray [ ]=new int[5]; C.int [ ] intArray ={1,2,3,4,5}; D.int intArray [5]={1,2,3,4.5}; 5.在 Swing 中,它的子类能用来创建框架窗口的类是 ( B A.JWindow C.JDialog B.JFrame D.JApplet D ))6.MouseListener 接口不能处理的鼠标事件是 ( .. A.按下鼠标左键 C.鼠标进入 7.以下不属于文字字型要素的是 ( ... A.颜色 C.风格 A )B.点击鼠标右键 D.鼠标移动B.字体 D.字号 8.在以下四个供选的整数中,能作为线程最高优先级的整数是 ( A.0 C.10 B.1 D.11C)9.Java 语言可以用 javax.swing 包中的类 JFileChooser 来实现打开和保存文件对话框。用户通过文件对话框不可能 ... 获得的信息是 ( A.文件名称 C.文件内容 C) B.文件路径 D.文件对象 )10.在编写访问数据库的 Java 程序时,Connection 对象的作用是 ( A A.用来表示与数据库的连接 C.在指定的连接中处理 SQL 语句 B.存储查询结果 D.建立新数据库连接二、填空题(本大题共 10 小题,每空 2 分,共 20 分) 请在每小题的空格中填上正确答案。错填、不填均无分。 11.Java 的编译程序先将 Java 源程序翻译成与机器无关的__________。字节码 12.表达式¨ & 18??的值是__________。 .如果类 A 某个成员变量的类型是类 B,则类 A 和类 B 之间是__________关系。(P57)Has-a 14.Java 语言提供了两个用于处理字符串的类,它们是__________。String\StringBuffer 15.某程序用代码“JTextField text=new JTextField()”创建了一个文本框,并对这个文本框注册了监视器,则在监 ; 视器处理方法 actionPerformed(ActionEvent e)中,判定是在这个文本框上发生事件的条件表达式是__________。 e.getSource()==text 16.一个水平滚动条对象的初始值是 50,滑块的宽是 10 个像素,表示的范围是[0,250]。 创建这样的滚动条对象 时,提供的 5 个参数依次是__________。(P125)JScrollBar.HORIZONTAL,50,10,0,250 17.要在 JComponent 子类的组件中绘图,应重写__________方法。paintComponet() 18.当线程使用完临界段后,为了使等待的线程恢复工作,需要调用的方法是__________。Notify() 19.某程序想为一个 long 型整数文件构造随机读写对象,支持这个要求的类是__________。RandomAccessFile 20.设已知服务器的 IP 地址和端口号,要创建一个套接字对象,支持这个要求的类是__________。Socket 三、简答题(本大题共 6 小题,每小题 3 分,共 18 分) 21.请写出一段 if 语句,判断一个整数 n 是否为偶数。如果是偶数,输出“Yes.”;否则,输出“No.”。 If(n%2==0){System.out.println(“Yes”);}els{System.out.println(“No”);} 22.请写出接口定义的一般形式。(P59) 23.请写出 Java 语言编写事件处理程序的两种主要方案。(P87) 24.设已经有 Graphics2D 对象 g2d, 请用 Java 语句绘制一个矩形 rect,其左上角坐标是(20,30),宽是 120,高是 30。 Rectangle2D rect=new Rectangle2D.Double(20,30,120,30) G2d.draw(rect);25.打开文件对话框时,还可以设置筛选条件,即指定文件的类型。请写出 FileFilter 类预设的两个方法。accept() getDescription() 26.请写出 URLConnection 类提供的三个常用方法。 getOutputStream() getInputStream() connect()四、程序填空题(本大题共 5 小题,每空 2 分,共 20 分) 27.方法 void moveOddForword(int a[ ])的功能是将数组中的所有奇数移到所有偶数之前。 void moveOddForword(int a[]){ for(int i=0, odd=0;___ i&a.length _____;i++) if(___a[i]%2= =0_____){ int t=a[i];a[i]=a[odd];a[odd]=t;odd++; } } 28.以下程序创建了一个窗口,然后在窗口内显示″Hello,World! ″。 import javax.swing.*; import java.awt*; public class HelloWorld { public static void main(String[ ]ares) { TextFrame frame=new TextFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame. ____ setVisable(true)____; } } class TextFrame extends JFrame public TextFrame() { . setTitle(″HelloWorld″); setSize(WIDTH,HEIGHT); TextPanel panel=new TextPanel(); Container contentPane=getContentPane(); contentPane.add(panel); } public static final int WIDTH=300; public static final int HEIGHT= 200; } class TextPanel extends JPanel { public void paintComponent(Graphics g) { { super. ___ paintComponent(g)_____; g.drawString(″Hello,World! ″,x,y); } public int x=100; public int y=100; } 29.以下是子窗口中设置一个菜单条类的定义。类的构造方法根据指定的窗口名称和菜单表设置菜单条,菜单和菜 单项,当选中某个菜单项时,在文本框中显示相应菜单项被选中的信息。 class MenuWindow extends JFrame implements ActionListener { public static JTextField text; public MenuWindow(String s,String menuList[][]) { setTitle(s); Container con=this.getContentPane(); con.setLayout(new BorderLayout()); this.setLocation(100,100); this.setSize(300,100); JMenuBar menubar=new JMenuBar(); for(int i=0; i&menuList.length;i++) { JMenu menu=new JMenu(menuList[i][0]); for(int j=1;j&menuList[i].1ength;j++){ JMenultem anltem=new JMenultem(menuList[i][j]); anltem.setActionCommand(menuList[i][j]); anltem.___ ActionListener(this)_____;menu.add(anltem); } menubar.__ add(menu)________; } text=new JTextField();setJMenuBar(menubar); con.add(text,BorderLayout.SOUTH); } public void actionPerformed(ActionEvent e){ text.setText(e.getActionCommand()+″菜单项被选中! ″); } } public class Test29 extends Applet { MenuWindow window; String menuList[][]={{″体育″,″跑步″,″打蓝球″,″打乒乓″}, {″娱乐″,″唱歌″,″跳舞″}}; public void init() { window=new MenuWindow(″体育娱乐之窗″,menuList); window.setVisible(true); } } 30.以下是一个用鼠标自由作画的小应用程序。最简单的方法是根据鼠标所在位置画点,跟随鼠标的移动,不断画 圆点,就能实现用鼠标作画。 import java.awt.*; import java.awt.event.*; public class Test30 extends java.applet.Applet implements MouseMotionListener { Color color;int lineSize=2: int x=-1,y=-l; public void init(){ setLocation(30,20); setSize(300,300);setBackground(Color.green);addMouseMotionListener(this); } public void paint(Graphics g){ if(x!=-1&&y!=-1) { g.setColor(color);g.fillOval(x,y,1ineSize,lineSize); } } public void mouseMoved(MouseEvent e){} public void mouseDragged(MouseEvent e){ x=e.getX();y=e.getY();___ repaint()______; } public void ______ update()__ (Graphics g){ } 31.以下定义的类 ShareData 用于管理多个线程共享数据 data。一个线程生成 data,另一个线程使用 data。约定, 新生成的 data 只有被另一个线程使用后,才能生成下一个 data。反之,一个 data 被使用后,也不能再继续使用。 所以,生成和使用 data 的线程之间需要互斥和同步。以下是管理上述使用方式的类,类内有要管理的共享数据,以 及对共享数据的存操作 putData()和取操作 getData()。 class ShareData{ int data;∥ 共享数据 boolean newData=false;∥ 有最近新生成 data 的标志 synchronized int getData(){ while(!newData){ try{ _____ wait()____; paint(g);} ; } catch(InterruptedExceptipn e){ System.out.println(″因错误,而中断!″); } } newData=false; notify();return data; } synchronized void putData(int n){ while(newData){ try{wait(); }catch(InterruptedException e){ System.out.println(″因错误,而中断! ″); } } data=n; notify(); } } 五、程序分析题(本大题共 5 小题,每小题 4 分,共 20 分) 32.阅读下列程序,请写出该程序的输出结果。 class Parent{ private void method 1 () { System.out.println(″Parent′s method 1()″);} ______ newData=true ____; return;public void method 2 () { System.out.println(″Parent′s method 2()″);method 1();} } class Child extends Parent { public void method l (){ System.out.println(″Child′s method 1 ()″);}public static void main(String args[]){ Parent p = new Child();p.method2();} } 答:Parent′s method 2() Parent′s method 1()33.阅读下列程序,请写出该程序的功能。 import java.util.*;import javax.swing.*; public class Test33{ public static void main(String args[]){ String str=(String)JOptionPane.showInputDialog(null,″请输入信息″, ″输入对话框″,JOptionPane.PLAIN_MESSAGE,null,null,null); StringTokenizer pas=new StringTokenizer(str, ″,″); int n=pas.countTokens(); System.out.println(″输入的信息有单词:″+n+″个,全部单词如下:″); while(pas.hasMoreTokens()){ String s=pas.nextToken(); System.out.println(s); } } ) 答: 在输入对话框中输入文字,并以多好作为分割符输出单词个数,及各个单词 34.阅读下列程序,请用示意图画出程序运行时呈现的界面。 import java.applet.*;import java.awt.*;import javax.swing.*; class MyPanel extends JPanel{ JTextField textl,text2; MyPanel(String sl,String s2) { textl=new JTextFieId(s1); text2=new JTextField(s2); add(text 1); } } class MySubPanel extends MyPanel { JTextField text; MySubPanel(String sl,String s2,String s3) { super(s1,s2);text = new JTextField(s3);add(text); } } public class Test34 { public static void main(String args[]) { JFrame mw=new JFrame(″一个示意窗口″); mw.setSize(350,150); Container con = mw.getContentPane(); con.setLayout(new BorderLayout()); MyPanel pl=new MyPanel(″文本框 l″,″文本框 2″); MySubPanel p2=new MySubPanel(″文本框 3″,″文本框 4″,″文本框 5″); JTextArea text=new JTextArea(″这里是一个文本区″); add(text2); con.add(pl,″North″); con.add(p2,″South″); con.add(text,″Center″);mw.setVisible(true); } }35.阅读下列程序,请写出该程序的功能。 import java.applet.*:import java.awt.event.*;import javax.swing.* public class Class 1 extends Applet implements KeyListener{ JButton button=new JButton(″开始″); JTextArea text=new JTextArea(5,20); public void init() { button.addKeyListener(this); add(button);add(text); } public void keyPressed(KeyEvent e){ int t=e.getKeyCode(); if(t&=KeyEvent.VK_A&& t&=KeyEvent.VK_Z) { text.append(″ ″+(char)t); } } public void keyTyped(KeyEvent e){} public void keyReleased(KeyEvent e){} } 答:程序功能:从键盘输入字符如果是大写字母 A-Z,则显示在文本区中 36.阅读下列程序,请写出该程序的功能。 import java.applet.*; import java.awt.*;public class Test36 extends java.applet.Applet implements Runnable{ Thread myThread = null; double seta=0.0; public void start() { setSize(500,400); if(myThread=null){ myThread=new Thread(this); myThread.start();} } public void run() { while(myThread!=null) { try {myThread.sleep(40); } catch(InterruptedException e){} seta+=3.0; if(seta&=360)seta=0; repaint(); } } public void paint(Graphics g) { final double pi=3.14159; final double r = 100.0; int x0=250+(int)(r*Math.cos(3..0*seta)); int y0=200+(int)(r*Math.sin(3..0*seta)); g.setColor(Color.red); } } 答:红色、顺时针画圆 六、程序设计题(本大题共 2 小题,每小题 6 分,共 1 2 分) 37.请编写方法 void strReverse(String str),该方法的功能是输出一个新字符串,新字符串字符排列顺序与原字符串 g.drawOval(x0,y0,10,10);str 的字符排列顺序相反。例如,strReverse(″ABCD″) 所输出的结果是″DCBA″。请使用字符串与字节数组的相 互转换方法进行设计。答:public static void strReverse(String str){ byte[] s=str.getBytes(); String t=&&; for(int i=s.length-1;i&=0;i--){ t+=(char)s[i]; } System.out.println(t); }38.请设计实现如下用于输入学号和姓名的对话框界面,其中空白格是文本框,用于输入相应的内容。这里给出的是程序的一部分, 你要编写的是类 InputNoNameDialog 的构造方法 InputNoNameDialog(JFrame f, String s,JTextField t)。其中参数 f 是对话框的依赖窗口,s 是对话框标题,t 是依赖窗口中显示对话框输入内容的文本框。 以下是类 InputNoNameDialog 的程序框架。 class InputNoNameDialog extends JDialog implements ActionListener{ JLabel title;JTextField textl,text2,mainText;JButton done; InputNoNameDialog(JFrame f ,String s,JTextField t) { super(f,s,true); mainText = t;Container con = getContentPane(); title=new JLabel(s); textl=new JTextField(10);text2=new JTextField(10); con.setLayout(new GridLayout(3,2)); con.setSize(200,100); setModal(false); //请在以下位置续写其余代码答: done=new JButton(&确定&); done.addActionListener(this); con.add(title);con.add(done); con.add(new JLabel(&学号&));con.add(textl); con.add(new JLabel(&姓名&));con.add(text2); setVisible(true);}public void actionPerformed(ActionEvent e) { //输入结束按确定按钮后,将对话框中输入的学号和姓名在它依赖窗口的文本框中显示。 mainText.setText(″学号:″+textl.getText()+″ 姓名:″+text2.getText()); setVisible(false);dispose(); } }全国 2010 年 10 月自学考试 Java 语言程序设计(一)试题 课程代码:04747一、单项选择题(本大题共 10 小题,每小题 1 分,共 10 分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未 选均无分。 1.以下是关于 Java 语言关键字的叙述,其中正确的是( )A.关键字可以用来描述类的成员类型,但是不能描述普通变量 B.关键字由字母(包括英文字母、下划线字符、美元字符、文字字符)和数字组成 C.关键字不可以用作变量、方法、类或标号的标识符 D.break 和 main 都是 Java 语言的关键字 2.执行以下代码,输出结果是( int x=5,y=7,u=9,v=6; System.out.println(x&y ? x+2:u&v ? u-3:v+2); A.8 C.7 B.6 D.true ) 3.Java 语言中,只限子类或者同一包中的类的方法能访问的访问权限是( A.public C.protected B.private D.&无修饰&)4.设有数组定义 int[][] x={{1,2},{3,4,5},{6},{}}; ,则 x.length 的值为( A.3 C.6 5.在以下 Swing 的类中,属于容器的是( A.JApplet C.JTextArea B.4 D.7 ) B.JButton D.JMenu ))6.在以下供选择的方法中,属于接口 MouseMotionListener 的方法是( A.mouseReleased() C.mouseExited() 7.小程序要播放音频文件,可使用类( A.Audio C

我要回帖

更多关于 微信小程序中的if语句 的文章

 

随机推荐