当前位置:文档之家› JAVA程序设计实用教程(第二版) 主编胡伏湘 雷军环 第7章课后习题答案

JAVA程序设计实用教程(第二版) 主编胡伏湘 雷军环 第7章课后习题答案

JAVA程序设计实用教程(第二版)  主编胡伏湘 雷军环  第7章课后习题答案
JAVA程序设计实用教程(第二版)  主编胡伏湘 雷军环  第7章课后习题答案

第7章习题解答

一、简答题

1.Applet有什么安全限制?

答:Applet不能加载客户端的类与定义客户端的方法,Applet不能访问客户端的文件,包括阅读、修改、删除,Applet不能在客户端创建网络连接,防止客户端的资料被盗取,Applet不能在客户端启动任何程序。

2.Applet是什么?简述Applet在浏览器中执行的工作原理。

答:Applet也叫小应用程序,是一种在浏览器环境下运行的Java程序。当某一个浏览器向服务器请求下载嵌入了Applet的HTML文件时,浏览器会根据Applet的名字和位置自动把字节码文件从WWW服务器上下载到本地,然后浏览器利用本身拥有的Java解释器直接执行该字节码文件。

3.简述浏览器调用Applet类的生命周期方法的过程。

答:一个Applet的生命周期与Web页面有关。当首次加载含Applet的页面时,浏览器调用init()方法,完成Applet的初始化。然后调用start()方法,完成有关动作的执行。接着调用paint()方法在浏览器上绘制内容。当用户离开页面时,浏览器调用stop()方法停止小程序运行。若用户关闭浏览器将使Applet停止运行,浏览器调用destory()方法终止,使小应用程序有机会释放其存在期间锁定的资源。只要用户不关闭浏览器,重新加载页面,浏览器则只调用start()方法和paint()方法重新绘制并运行小程序。

4.简述paint()、repaint()和update()三个方法之间的调用关系。

答:paint()、repaint()和update()是与显示及刷新有关的重要的Applet方法,它们都是在https://www.doczj.com/doc/9d14455997.html,ponent类中声明的。

Applet的显示和刷新由一个独立的线程控制,称为AWT线程。当Applet首次被加载或Applet部分显示内容被其他窗口覆盖,那么当其他窗口关闭或移开时,AWT线程会自动调用paint()方法。当在程序中使用repaint()方法通知系统更新显示内容时,AWT线程会自动调用update()方法,该方法首先将当前显示画面清空,然后调用paint()方法绘制新的内容。

5.在Applet中如何显示图像?

答:在Applet中显示图像的方法如下:

?在Applet的init( )方法中用Applet类的getImage( )方法装载一个Image对象

?在Applet的paint( )方法中用Graphics类的drawImage( )方法将该对象画在屏

幕上。

6.在Applet中如何播放声音?

答:在Applet中播放声音文件有两种不同的方式:

第一种方法:利用Applet类的play( )方法直接播入。

第二种方法:利用Applet的getAudioClip()方法创建声音剪辑对象,加载指定文件,返回AudioClip对象,然后利用AudioClip对象的声音文件处理方法play( )或loop( )方法播放声音。

二、编程题

1.试绘制一面国旗。程序的运行结果如图7-11所示:

图7-11

程序代码如下:

import java.awt.*;

import java.awt.Graphics;

import java.awt.event.*;

import java.applet.Applet;

public class XT007201 extends Applet {

public void paint(Graphics g){

//下面两行是大五角星的10个拐点的X坐标和Y坐标

int xs1[]={80,85,98,87,92,80,68,73,63,75,80};

int ys1[]={40,54,54,62,76,67,76,62,54,54,40};

//下面两行是第1个小五角星的10个拐点X坐标和Y坐标

int xs2[]={115,117,120,117,118,115,112,113,110,113,115};

int ys2[]={34,38,38,40,44,42,44,40,38,38,34};

g.setColor(Color.red);

g.fillRect(40,20,250,150);

g.setColor(Color.yellow);

Polygon p1=new Polygon(xs1,ys1,10);

g.fillPolygon(p1);

Polygon p2=new Polygon(xs2,ys2,10);

g.fillPolygon(p2);//绘制小五角星

g.copyArea(110,34,10,10,10,11);//复制绘出第二个小五星

g.copyArea(110,34,10,10,10,26);//复制绘出第三个小五星

g.copyArea(110,34,10,10,0,38);//复制绘出第四个小五星

}

}

2.编写一个Applet,实现一个字符串沿正弦曲线移动。

import java.applet.*;

import java.awt.*;

public class XT007202 extends Applet {

int x,y;

int h;

Dimension d;

public void init() {

d = getSize();

h = d.height / 2;

x = 20;

}

public void paint(Graphics g) {

if (x

y = (int)((1.0 + Math.sin((x)*0.05))*h);

//y = (int) (Math.sin(x*0.01)*h);

x++;

}

else

x=20;

g.drawString("你好",x,y);

try {

Thread.sleep(50);

}

catch (InterruptedException e) {

showStatus(e.toString());

}

repaint();

}

}

//Dimension

//The Dimension class encapsulates the width and height of a component

//(in integer precision) in a single object. The class is associated

//with certain properties of components. Several methods defined by the

// Component class and the LayoutManager interface return a Dimension object.

//Normally the values of width and height are non-negative integers.

// The constructors that allow you to create a dimension do not prevent

//you from setting a negative value for these properties. If the value of

//width or height is negative, the behavior of some methods defined by other

// objects is undefined.

//showStatus()

//Requests that the argument string be displayed in the "status window".

//Many browsers and applet viewers provide such a window, where the

//application can inform users of its current state.

3.当鼠标单击事件发生时,利用Math类的方法Random( )产生3个随机数,同时获得鼠标位置坐标,在鼠标单击处绘制圆。圆的颜色由三个随机数决定。程序的输出结果如图7-12所示。

图7-12

import java.awt.*;

import java.awt.event.*;

import java.applet.*;

public class XT007203 extends Applet {

int i,j,k;

int x,y;

Color mycolor;

public void init() {

this.addMouseListener(new MouseAdapter() {

public void mouseClicked(MouseEvent e) {

this_mouseClicked(e);

}

});

}

void this_mouseClicked(MouseEvent e) {

x = e.getX() ;

y = e.getY() ;

i = (int)(255*Math.random());

j = (int)(255*Math.random());

k = (int)(255*Math.random());

repaint();

}

public void paint(Graphics g){

mycolor = new Color(i,j,k);

g.setColor(mycolor);

g.fillOval(x-10,y-10,20,20);

}

//重载update( )方法,使每次单击鼠标所绘制的点圆得以保留。public void update(Graphics g){

paint(g);

}

}

4.编写一个Applet,显示一幅图像并配上背景音乐。

请参考7.1.2节和7.3.1节内容。

Java程序设计实例教程考试题

Java程序设计练习题 一、选择题 1、为使Java程序独立于平台,Java虚拟机把字节码与各个操作系统及硬件( A ) A)分开B)结合 C)联系D)融合 2、Java语言与C++语言相比,最突出的特点是( C ) A)面向对象B)高性能 C)跨平台D)有类库 3、下列Java源程序结构中前三种语句的次序,正确的是(D) A)import,package,public class B)import必为首,其他不限 C)public class,package,import D),import,public class 4、在JDK目录中,Java程序运行环境的根目录是( A ) A)bin B)demo C)lib D)jre 5、下列运算符中属于关系运算符的是(A ) A)== B).= C)+= D)-= 6、下列布尔变量定义中,正确并且规范的是( B ) A)BOOLEAN canceled=false; B)boolean canceled=false; C)boolean CANCELED=false; D)boolean canceled=FALSE; 7、下列关键字中可以表示常量的是( A ) A)final B)default C)private D)transient 8、下列运算符中,优先级最高的是( A ) A)++ B)+ C)* D)> 9、Java中的基本数据类型int在不同的操作系统平台的字长是( B ) A)不同的B)32位 C)64位D)16位

10、给一个short类型变量赋值的范围是( C ) A)-128 至 +127 B)-2147483648至 +2147483647 C)-32768至 +32767 D)-1000至 +1000 11、下列运算中属于跳转语句的是( D ) A)try B)catch C)finally D)break 12、switch语句中表达式(expression)的值不允许用的类型是( C ) A)byte B)int C)boolean D)char 13、下列语句中,可以作为无限循环语句的是( A ) A)for(;;) {} B)for(int i=0; i<10000;i++) {} C)while(false) {} D)do {} while(false) 14、下列语句中执行跳转功能的语句是( C ) A)for语句B)while语句 C)continue语句D)switch语句 15、下列表达式中,类型可以作为int型的是( C ) A)“abc”+”efg”B)“abc”+’efg’ C)‘a’+’b’D)3+”4” 17、数组中各个元素的数据类型是( A ) A)相同的B)不同的 C)部分相同的D)任意的 18、在Java语言中,被成为内存分配的运算符是( A ) A)new B)instance of C)[] D)() 19、接口中,除了抽象方法之外,还可以含有( B ) A)变量B)常量 C)成员方法D)构造方法 20、下列能表示字符串s1长度的是( A ) A)s1.length()B)s1.length C)s1.size D)s1.size() 21、StringBuffer类字符串对象的长度是( C ) A)固定B)必须小于16个字符 C)可变D)必须大于16个字符 22、构造方法名必须与______相同,它没有返回值,用户不能直接调用它,只能通过new调用。( A ) A)类名B)对象名 C)包名D)变量名 23、子类继承了父类的方法和状态,在子类中可以进行的操作是( D ) A)更换父类方法B)减少父类方法 C)减少父类变量D)添加方法 24、String、StingBuffer都是______类,都不能被继承。( C )

C++程序设计基础课后答案 第八章

8.1 阅读下列程序,写出执行结果 1.#include class Bclass { public: Bclass( int i, int j ) { x = i; y = j; } virtual int fun() { return 0 ; } protected: int x, y ; }; class Iclass:public Bclass { public : Iclass(int i, int j, int k):Bclass(i, j) { z = k; } int fun() { return ( x + y + z ) / 3; } private : int z ; }; void main() { Iclass obj( 2, 4, 10 ); Bclass p1 = obj; cout << p1.fun() << endl; Bclass & p2 = obj ; cout << p2.fun() << endl; cout << p2.Bclass :: fun() << endl; Bclass *p3 = &obj;

cout << p3 -> fun() << endl; } 2.#include class Base { public: virtual void getxy( int i,int j = 0 ) { x = i; y = j; } virtual void fun() = 0 ; protected: int x , y; }; class A: public Base { public: void fun() { cout<<"x = "<

Java程序设计基础习题(1-3章)

Java程序设计基础 一、选择题 1、下列标识符不合法的是() A) $variable B) _variable C) variable5 D) break 2、下列哪一个不属于Java的基本数据类型() A) int B) String C) double D) boolean 3、下列答案正确的是() A) int n = 7; int b = 2 * n++; 结果: b = 15, n = 8 B) int n = 7; int b = 2 * n++; 结果: b = 16, n = 8 C) int n = 7; int b = 2 * n++; 结果: b = 14, n = 8 D) int n = 7; int b = 2 * n++; 结果: b = 14, n = 7 4、Java中,下列答案正确的是() A) int n = 7; int b = 2; n/b=3.5; B) int n = 7; int b = 2; n/b=3.5L C) int n = 7; int b = 2; n/b=3.5D D) int n = 7; int b = 2; n/b=3; 6、表示范围大的数据类型要转换成范围小的数据类型,需要用到()类型 转换 A) 隐式B) 强制

7、System.out.print(“1”+2)打印到屏幕的结果是() A) 3 B) 12 C) 1+2 D) 4 8、下面哪个是不合法的变量名称?() A) while-ture B) True C) name D) T1 9、下列变量定义正确的是:() A) boolean status=1; B) float d = 45.6; C) char ch=”a”; D) int k = 1+’1’; 10、某个main()方法中有以下的声明: final int MIN=0; final int MAX=10; int num=5; 下列哪个语句可以用, 来表示”num的值大于等于MIN并且小于等于MAX” ( ) A) !(numMAX) B) num>=MIN && num<=MAX C) num>MIN || num<=MAX D) num>MIN || num

C语言程序设计基础知识 习题一及参考答案

第一章:程序设计基础知识 一、单项选择题 1、以下( )是面向过程的程序设计语言。 A)机器语言B)汇编语言C)高级语言D)第四代语言 2、程序设计一般包含以下四个步骤,其中其中首先应该完成的是( )。 A)设计数据结构和算法B)建立数学模型 C)编写程序D)调试和运行程序 3、以下常用算法中适合计算等差级数的算法是( )。 A)枚举法B)递推法C)分治法D)排序法 4、以下不属于算法基本特征的是( )。 A)有穷性B)有效性C)可靠性D)有一个或多各输出 5、以下描述中不正确的是( )。 A)程序就是软件,但软件不紧紧是程序。 B)程序是指令的集合,计算机语言是编写程序的工具。 C)计算机语言都是形式化的语言,它有一个语法规则和定义。 D)计算机语言只能编写程序而不能表示算法。 6、下面描述中,正确的是( ) A)结构化程序设计方法是面向过程程序设计的主流。 B)算法就是计算方法。 C)一个正确的程序就是指程序书写正确。 D)计算机语言就是编写程序的工具而不是表示算法的工具。 7、下面描述中,不正确的是( )。 A)递归法的关键是必须有一个递归终止的条件。

B)递归算法要求语言具有反复自我调用子程序的能力。 C)对于同一个问题,递推算法比递归算法的执行时间要长。 D)递推算法总可以转换为一个递归算法。 8、N-S图与传统流程图比较,主要优点是( )。 A)杜绝了程序的无条件转移。 B)具有顺序、选择和循环三种基本结构。 C)简单、只管。 D)有利于编写程序。 A)B)C)D) 二、填空题 1、在流程图符号中,判断框中应该填写的的是________。(判断条件) 2、结构化程序设计是__________应遵循的方法和原则。(面向过程编程) 3、结构化程序必须用__________程序设计语言来编写。(具有结构化控制语句) 4、可以被连续执行的一条条指令的集合称为计算机的________。(程序) 5、只描述程序应该“做什么”,而不必描述“怎样做”的语言被称为________。(面向对象) 6、任何简单或复杂的算法都是由_____和_____这两个要素组成。(数据结构算法) 7、算法的_______特征是指:一个算法必须在执行有限个操作步骤后终止。(有穷性) 8、在三种基本结构中,先执行后判断的结构被称为_________。(直到型循环结构) 9、在程序设计中,把解决问题确定的方法和有限的步骤称为______。(算法) 10、程序设计风格主要影响程序的________。(可读性) 11、用模块组装起来的程序被成为________结构化程序。(模块化) 12、采用自上而下,逐步求精的设计方法便于____________。(结构化和模块化) 三、应用题

Java程序设计与实践教程_王薇主编_答案

第1章JAVA简介 一、判断题 1.√ 2.√ 3.? 4.? 5.? 6.√ 7.√ 8.√ 9.? 10.? 二、填空题 1.Application Applet 2. 类(字节码文件、目标文件) .class 3.对象 4. 主 5. J2SE J2EE J2ME 三、选择题 1.B 2. D 3.B 4.B 5. A 四、简答题 1.参考答案 Java语言是简单的、面向对象的、分布式的、健壮的、安全的、体系结构中立的、可 移植的、编译解释型的、高性能的、多线程的、动态的等等。 2.参考答案 Java程序执行的具体过程如图1所示。 图1 Java程序的运行机制 3.参考答案 Java程序在计算机在执行要经历以下几个阶段: (1)使用文字编辑软件(例如记事本、写字板、UltraEdit等)或集成开发环境 (JCreater、Eclipse、MyEclipse等)编辑Java源文件,其文件扩展名为.java。 (2)通过编译使.java的文件生成一个同名的.class文件。 (3)通过解释方式将.class的字节码文件转变为由0和1组成的二进制指令执行。 在以上阶段中可以看出Java程序的执行包括了编译和解释两种方式。 第2章Java 语法基础 一、判断题

1. ? 2.√ 3. ? 4.? 5.? 二、填空题 1.10 2. 单精度双精度 3. n%13 !=0?false:true 4.接口 5. false 三、选择题 1.D 2. C 3.D 4.A 5. C 第3章程序流程控制 一、判断题 1.错误 2.? 3.? 4.? 5.√ 二、填空题 1.循环 2. if 3.case switch 4. while do-while 5. continue 三、选择题 1.D 2. C 3.C 4.B 5. C 第4章数组 一、判断题 1. ? 2. √ 3. √ 4. √ 5.? 二、填空题 1.类型 2. new 3.长度 4. 分配空间 5. 3 6 9 三、选择题 1.D 2. A 3.C 4.B 5. B 第5章类和对象 一、判断题 1.√ 2.√ 3.? 4.? 5.√ 6.? 7.√ 8.? 9.? 10.√ 11.√ 12.√ 13.? 14.? 15. ? 二、填空题 1.public default 2. class 属性方法 3.public static void main(String args[]){} 4. new

Java程序设计基础习题答案

Java程序设计基础课后习题参考答案 第2章 1、关于Java Application 的入口方法main()的检验: main()方法的参数名就是否可以改变? main()方法的参数个数就是否可以改变? 该方法名就是否可以改变? 参考答案:(1)main()方法的参数名可以改变。(2)main()方法的参数个数不可以改变。(3)该方法名不可以改变。 2、当一个程序没有main()方法时,能编译不?如果能编译,能运行不? 参考答案:当一个程序没有main()方法就是,就是可以编译通过的,但就是不能给运行,因为找不到一个主函数入口。 3、下列语句能否编译通过? byte i = 127; byte j = 128; long l1 = 999999; long l2 = 9999999999; 参考答案:byte i 与long l1可以编译通过。而byte j 与long l2 超出自身数据类型范围,所以编译失败。 4、下列语句能否编译通过? float f1 = 3、5; float f2 = 3、5f; 参考答案:java中浮点型的数据在不声明的情况下都就是double型的,如果要表示一个数据就是float型的,必须在数据后面加上“F”或“f”;因此,float f1 无法编译通过。 5、验证int 与char,int与double等类型就是否可以相互转换。 参考答案:(1)char类型可以转换为int 类型的,但就是int类型无法转换为char类型的;(2)int 可以转换为double类型的,但就是double类型无法转换为int 类型的。 6、计算下列表达式,注意观察运算符优先级规则。若有表达式就是非法表达式,则指出不合法之处且进行解释。 (1) 4+5 == 6*2 (2) (4=5)/6 (3) 9%2*7/3>17 (4) (4+5)<=6/3 (5) 4+5%3!=7-2 (6) 4+5/6>=10%2 参考答案:表达式(2)为不合法表达式,只能将值赋值给一个变量,因此其中(4=5)将5赋值给4就是不合法的。 7、下列()就是合法的Java标识符。 (1) Counter1 (2) $index, (3) name-7 (4) _byte (5) larray (6) 2i

相关主题
文本预览
相关文档 最新文档