《JAVA程序设计》实验指导书
实验指导书按章节展开,每章包含以下内容: 1.概念复习和巩固题(必做)。每次课后和上机前,请完成本章的概念复习和巩固题。 2.每章的上机实验(必做)。每次上机实验时间为2课时。必须在规定上机时间内,独立完成所有上机实验题的程序源代码的设计和编写,调试通过后,通过运行程序检验结果的正确性,并经实验教师检查并记录成绩。上机实验当时未能完成的,必须在课外完成,并在下一次上机实验时请实验教师补查并登记。每次上机实验作业均需计算机打印输出或提交服务器保存,以备在课堂上或学期末检查和复习。 3.每章的拓展上机实验(选做)。对学有余力的学生,完成每次上机实验必须的任务后,根据个人兴趣完成该部分上机实验题。该部分练习有些是要求调试程序使之能正确运行;有些是根据程序中的注释完成程序的编写,使之能编译通过并能正确运行。完成这些任务,通常需要查阅JavaAPI帮助文档。程序中的注释都是英文,这是为了今后进一步学习的方便,熟悉与Java编程相关的英文描述将是非常有益的。
第1章Java语言基础
一. 概念复习和巩固(请在课后和上机前完成下面的练习)
1.下面说法正确的是( C )。
A)Java 程序的源文件名称与主类(公共类)的名称相同,后缀可以是java或txt等。 B)JDK的编译命令是java。
C)一个java源程序编译后可能产生几个字节码文件。
D)在命令行运行编译好的字节码文件,只需在命令行直接键入程序名即可运行该程序。 2.下面的说法正确的是(ABCD)。
A) Java 语言是面向对象的、解释执行的网络编程语言。
B) Java 语言具有可移植性,是与平台无关的编程语言。 C) Java 语言可对内存垃圾自动收集。
D) Java 语言编写的程序虽然是“一次编译,到处运行”,但必须要java的运行环境。 3.下面main()方法的定义哪些是正确的(ACD)? A)public static void main(String args[]) {} B)public static void main(String[]) {} C)public static void main(String[] args) {} D)public static void main(String [] x) {}
4.用于定义数据简单类型的一组关键字是(B)。 A) class, float, main, public B) float, boolean, int, long C) char, extends, float, double D) int, long, float, import
5.以下的变量定义中,合法的语句是(B)。
A) float 1_variable = 3.4; B) int abc_ = 21; C) double a = 1 + 4e2.5; D) short do = 15; 6.定义变量如下: int i=18; long L=5; float f=9.8f; double d=1.2;
String s=\ 以下赋值语句正确的是(ABD)。
A) s=s+i; B) f=L+i; C) L=f+i; D) s=s+i+f+d; 7.以下语句输出的结果是( B) String str=\ int x=4,y=5; str=str+(x+y); System.out.println(str);
A)1239 B)12345 C)会产生编译错误 D)123+4+5 8.以下语句中没有编译错误或警告提示信息的是(B)?
A)byte b=256; B)double d=89L; C)char c=\ D)short s=8.6f; 9. 下面的程序输出结果是:1+2=3,请将程序补充完整。 public class App2 {
public static void main(String args[]) { int x=1,y=2;
System.out.println(______________); } }
答案:x+\
10.阅读下面的程序,回答问题。 程序如下:
public class App1 {
public static void main(String args[]) { char ch='\\n'; System.out.print(\ } }
(1)这是哪一类java程序?
(2)写出保存该文件的文件名及后缀名?
(3)在JDK下编译该文件的命令是什么?编译后形成什么文件? (4)在JDK下如何运行该程序?程序运行后输出的结果如何? 10.答案:
(1)Java应用程序(Java Application); (2)App1.java;
(3)在命令行用javac App1.java编译该程序。 编译后形成App1.class的字节码文件;
(4)在命令行键入java App1即可运行该程序。 编程序运行后输出的结果为: The first snow came, How beautiful it was!
11.阅读下面的程序,回答问题。 import java.applet.Applet; import java.awt.Graphics;
public class Applet1 extends Applet { public void paint (Graphics g) {
g.drawString (\ g.drawString (\ g.drawString (\
g.drawString (\ } }
(1)这是哪一类java程序?
(2)写出保存该文件的文件名及后缀名?
(3)在JDK下编译该文件的命令是什么?编译后形成什么文件?
(4)该程序能直接运行吗?写出嵌入该程序的字节码文件的html文件,该html文件可以任意命名吗?
(5)程序运行后输出几行?写出输出结果。
11.答案:
(1) Java小程序(Java Applet)。 (2)Applet1.java
(3)在命令行用javac Applet1.java编译该程序。编译后形成Applet1.class的字节码文件。 (4)不能,为了能使程序运行,还需编写html文件,用标记符将编译形成的字节码文件嵌入到html文件中,然后通过浏览器运行Java Applet。或在命令行通过命令appletviewer 运行html文件。嵌入该程序的字节码文件的html文件如下,该html文件可以任意命名(如命名为mypage.htm) mypage.htm文件如下:
(5)程序运行后输出2行;输出结果如下:
二. 本章上机实验
上机实验一
1.编写Java应用程序,定义byte、int、long、float、double、char和boolean等类型的数据并用一个输出语句输出,要求每行输出一个数据。 2.编写Java小应用程序,输出两行字符串:“Java很有趣。”和“努力学习Java编程。”,输出的起点坐标是(20,20),行距是50像素。
3.使用算术运算符得到一个4位十进制数的各位数字并输出,然后输出该数的逆序数和各位数字平方后相加的和。 4.编写Java小应用程序,用三目条件运算符求程序中给定的4个double数的最大值和最小值并输出结果。
5.编写Java应用程序,分别利用while循环、do…while循环和for循环求100~200的自然数的和。
6.编写Java小应用程序,选择合适的数据类型,利用循环求2的40次方的结果并输出。
上机实验二
1.编写Java应用程序,把100~1000的自然数中能够被3整除的数输出到屏幕上。 2.编写Java小应用程序,程序中自定义一个方法: double find2(int n)
方法的功能是求2的n次方。程序中调用该方法,输出2的40次方的结果并输出。
3.编写Java应用程序,参照例1.15自定义类Car,类中有3个变量:字符串name,表示汽车的品牌;字符串color,表示汽车的颜色;double型变量weight,表示汽车的自重;int型变量passenger,表示汽车能搭乘的人数。类中还定义一个构造方法,用来初始化上面的4个变量。在应用程序中创建类Car的1个对象(品牌:“本田”;颜色:“黑色”;自重:1500公斤;搭乘的人数:5人),并显示其信息。
4.编写Java小应用程序,其中定义一个int数组(数组元素任意指定),求数组元素的和、数组元素的最大值和最小值并输出所求的结果。
5.编写Java应用程序,从命令行传入多个字符串到程序中,并将他们分行输出在屏幕上。
第2章 使用Java解决简单的问题
一. 概念复习和巩固(请在课后和上机前完成下面的练习)
1.以下选项中变量均已正确定义,错误的赋值语句是(D)。 A) i--; B) i += 7; C) k += x +2; D) y + x = z;
2.若以下变量均已正确定义并赋值,下面符合Java语言语法的表达式是(B)。 A) a = a≤7 B) a = 7 + b + c C) int 12.3 % 4 D) a = a + 7 = c + b
3.定义整型变量: int n=456;,表达式的值为5的是(AB)。 A) n / 10 % 10 B) ( n - n / 100 * 100 )/10 C) n % 10 D) n / 10
4.对下面的语句序列正确的说法是 (B)。 int c='A'/3; c+='1'%5; System.out.println(c);
A)产生编译错误; B)输出结果25; C)输出结果21; D)输出结果2;
5.设 a, f, x, y, z 均为 int 型的变量,并已赋值,下列表达式的结果属于非逻辑值的是(D)。 A) x > y && f < a B) -z < x - y C) y != ++x D) y + x * x++
6.执行下列程序段后,b, x, y的值正确的是(C)。 int x=6,y=8; boolean b;
b=x A) true , 6, 8 B) false , 7, 7 C) true, 7, 7 D) false, 6, 8 7.下面的程序段输出的变量b的值是(B )。 int a = 0xFFFFFFFE; int b= ~a; System.out.println(\ A) 0xFFFFFFFE B) 1 C) 14 D)-2 8.若a和b均是整型变量并已正确赋值,正确的switch语句是(D)。 A) switch(a+b); B) switch( a+b*3.0 ) { …… } { …… } C) switch a D) switch ( a%b ) { …… } { …… } 9.以下由do-while语句构成的循环执行的次数是(D)。 A)无限次 B)有语法错,不能执行 C)一次也不执行 D)执行1次 int k = 0; do { ++k; }while ( k < 1 ); 10. 执行完下面的程序段后,k的值是(B)。 int k=0; label:for(int i=1;i<10;i++) { for(int j=1;j<5;j++) { k+=i+j; if(j==3) break label; } } A) 3 B) 9 C)12 D) 6 11.下列方法x的定义中,正确的是(A)。 A) int x( ){ char ch='a'; return (int)ch; } B) void x { ... } C) int x( int i ){ return (double)(i+10); } D) x( int a){ return a; } 12.下列方法定义中,方法头不正确的是(D)。 A) public int x( ){ ... } B) public static int x( double y ){ ... } C) void x( double d ) D) public static x( double a ){ ... } 13.为了区分重载多态中同名的不同方法,要求(A)。 A) 采用不同的形式参数列表 B) 返回值类型不同 C) 参数名不同 D) 选项A、B、C都对 14.在某个类中定义一个方法:void GetSort(int x),以下能作为这个方法的重载的是(ABCD)。 A.void GetSort(float x){ x*=x; } B.int GetSort(double y){ return (int)(2*y);} C.double GetSort(int x,int y) {return x+y;} D.void GetSort(int x,int y) { x=x+y;y=x-y} 15.若已定义:int a[ ]= {0,1,2,3,4,5,6,7,8,9} ; 则对a数组元素正确的引用是(B)。 A) a[-3] B) a[9] C) a[10] D) a(0) 16.下面是在命令行运行Java应用程序A,怎样才能在main(String args[])方法中访问单词\ java A the first snow , the first snow came. A)args[0] B)args[1] C)args[2] D)args[5] 二. 本章上机实验 上机实验三 1.编写Java小程序,定义一个整数1255,把它的2进制、16进制的表示在屏幕输出。 2.编写应用程序,在main方法在中定义字符串“1.235678e2”、“87.8f”和“128”,将他们分别转化为对应的double数、float数和int数并输出,最后输出这三个数的和(要求结果保留到