2004~2005《Java程序设计》上机练习题_第1页
2004~2005《Java程序设计》上机练习题_第2页
2004~2005《Java程序设计》上机练习题_第3页
2004~2005《Java程序设计》上机练习题_第4页
2004~2005《Java程序设计》上机练习题_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2004Java程序设计上机练习题(共包括四部分、16个练习、共96个练习题,请使用“视图”中的“文档结构图”查看)一、java语言基础和面向对象(教材内容的第1、2、3章)练习1(4)掌握:各种数据类型变量的定义和访问,各种数据类型常量的使用,数据类型转换。1. 编写Applet,其功能为:取两个小于1000的正随机数,若两个数均小于10,先将它们都放大50倍,否则不改变这两个数。最后,求这两个数的和并将结果输出。要求这些功能在主类的方法init( ) 中实现,并使输出结果仅保留小数点后4位(不需四捨五入)。程序import java.awt.*;import java.applet.*;p

2、ublic class Applet1 extends Appletpublic void init( ) Label out1=new Label( );Label out2=new Label( );double x,y;add(out1); add(out2);x=Math.random( )*1000;y=Math.random( )*1000; if(x10&y10) x*=50; y*=50; out1.setText(+x+y+ 约等于 ); out2.setText(+(int)(x+y)*10000)/10000.0);2. 请编写一个Applet,其功能为:取一个小于100

3、00的正随机整数,并输出该数的平方根。要求这些功能在主类的方法paint( ) 中实现,并使输出结果在四捨五入后保留小数点后4位。程序import java.awt.*;import java.applet.*;public class Applet1 extends Appletpublic void paint(Graphics g)int k;k=(int)(Math.random( )*1000);g.drawString(+k+ 的平方根约等于 + (int)(Math.sqrt(k)+0.00005)*10000)/10000.0,20,20);3. 编写一个Applet,其功能为

4、:取一个50200之间的正随机整数,如果该数为奇数则求它的平方根并转换成float型数后再输出;如果该数为偶数则求它的平方并输出。程序import java.awt.*;import java.applet.*;public class Applet1 extends Appletpublic void paint(Graphics g)int k;k=50+(int)(Math.random( )*150);if(k%2!=0) g.drawString(+k+ 的平方根约等于 +(float)Math.sqrt(k),20,20);else g.drawString(+k+ 的平方等于 +

5、k*k,20,20);4. 请编写一个Application,其功能为:取一个小于800的正随机整数,将其以如下形式输出: 所取随机数为:* 它的百位数字为:* 它的十位数字为:* 它的个位数字为:*程序/import java.io.*;public class Class1public static void main (String args)int x=(int)(Math.random( )*800);System.out.println(所取随机数为:+x);System.out.println(它的百位数字为:+x/100); System.out.println(它的十位数字为

6、:+x%100/10); System.out.println(它的个位数字为:+x%10);/try System.in.read( ); catch(IOException e) 练习2(5)掌握:(1)数组的定义、创建和初始化。 (2)方法的定义和调用。 (3)方法的参数是数组、方法的返回值是数组的编程。 (4)方法的递归调用。 (5)在应用程序中,接受并处理命令行参数。1.请编写一个Applet,其中定义了两个double类型数组a和b,还定义了一个方法square( )。数组a各元素的初值依次为1.2、2.3、3.4、4.5、5.6, 数组b各元素的初值依次为9.8、8.7、7.6、

7、6.5、5.4、4.3;方法square( )的参数为double类型的数组,返回值为float类型的数组,功能是将参数各元素的平方做为返回数组的元素的值。请在方法paint()中分别以a和b为实在参数调用方法square( ),并将返回值输出在屏幕上。要求调用square( a )的返回数组输出在Applet的一行上,数组的第一个元素的输出坐标为(20,20),其后的每个元素间隔40个像素。调用square( b )的返回数组输出在Applet的一列上,即下标为i+1(i=0,1,2,3,.)的元素的值,在下标为i的元素的值的正下方,其返回数组的第一个元素的输出坐标为(20,40),行隔为2

8、0像素。程序import java.awt.*;import java.applet.*;public class Applet1 extends Applet double a =1.2,2.3,3.4,4.5,5.6;double b=9.8,8.7,7.6,6.5,5.4,4.3;public void paint(Graphics g)float x=new floata.length;float y=new floatb.length;x=square(a);y=square(b);for(int i=0; ix.length;i+)g.drawString(+xi,20+i*40,

9、20);for(int i=0; iy.length;i+)g.drawString(+yi,20,40+i*20);float square(double x )float y=new floatx.length;for(int i=0; i x.length; i+)yi=(float)(xi*xi);return y;2. 请编写一个Application实现如下功能:在主类中定义两个double类型数组a和b,再定义一个方法sqrt_sum( )。数组a各元素的初值依次为1.2、2.3、3.4、4.5、5.6, 数组b各元素的初值依次为9.8、8.7、7.6、6.5、5.4、4.3;方

10、法sqrt_sum ( )的参数为double类型的数组,返回值类型为float型,功能是求参数各元素的平方根之和。请在主方法main()中分别以a和b为实在参数调用方法sqrt_sum ( ),并将返回值输出在屏幕上。程序/import java.io.*;public class Class1static double a =1.2,2.3,3.4,4.5,5.6;static double b =9.8,8.7,7.6,6.5,5.4,4.3;public static void main (String args)System.out.println(数组a各元素的平方根之和为:+sq

11、rt_sum(a);System.out.println(数组b各元素的平方根之和为:+sqrt_sum(b);/try char c=(char)System.in.read( );catch(IOException e) static float sqrt_sum(double x)double y=0.0;for(int i=0; ix.length; i+) y+=Math.sqrt(xi);return (float)y;3. 请编写一个Application实现如下功能:在主类中定义方法f1(int n) 和方法f2(int n),它们的功能均为求 n!,方法f1( ) 用循环实现

12、,方法f2( )用递归实现 。在主方法main( ) 中,以4为实在参数分别调用方法f1( ) 和方法f2( ),并输出调用结果。程序/import java.io.*;public class Class1public static void main (String args)System.out.println(用循环实现求 n! 的结果(n=4):+f1(4);System.out.println(用递归实现求 n! 的结果(n=4):+f2(4);/try char c=(char)System.in.read( );catch(IOException e) static long

13、f1(int n)long k=1;for(int i=1;i= 3)x=Float.valueOf(args0).floatValue( );y=Float.valueOf(args1).floatValue( );op=args2.charAt(0);switch(op) case +: System.out.println(x+y+=+(x+y); break; case -: System.out.println(x+-+y+=+(x-y); break; case *: System.out.println(x+*+y+=+(x*y); break; case /: System.o

14、ut.println(x+/+y+=+(x/y); break; default : System.out.println(非法运算符!);else System.out.println(命令行参数错!); System.exit(-1); 5. 编写Application,主类中包含以下两个自定义方法: void printA( int array )和int myArray(int n)。方法printA(int array)的功能是把参数数组各元素在屏幕的一行中输出。方法myArray(int n)的功能是生成元素值是50100之间的随机值的int型数组,数组元素的个数由参数n指定。在应

15、用程序的main( )方法中,用命令行传入的整数作为myArray(int n) 方法调用时的实际参数,生成一个整型数组,并调用方法printA( )输出该数组的所有元素。程序public class Class1static int n;public static void main (String args)if(args.length 0)n=Integer.parseInt(args0); int a=new intn; a=myArray(n); printA(a);else System.out.println(缺命令行参数!); System.exit(-1); static v

16、oid printA(int x)for(int i=0; i x.length; i+) System.out.print(xi+ );System.out.println( );return;static int myArray(int k)int x =new intk;for(int i=0; i k; i+) xi=50+(int)(Math.random( )*50);return x;练习3(3)掌握: 方法的重载。1. 请编写一个Applet,其主类名为Applet1,其中包含两个同名方法arrayMin( ),它们都只有一个参数,其中一个arrayMin( )方法的参数为in

17、t型数组,返回值类型为int型数;另一个arrayMin( )方法的参数为double型数组,返回值类型为double型数;这两个方法的功能均为返回参数数组元素的最小值。通过paint( )方法调用上述两个同名方法arrayMin( ),求数组a (其元素的值依次为26,82,-3,65,18,9)和数组b (其元素的值依次为3.6,57.2,8.5,78.8) 的最小元素的值并输出。程序import java.awt.*;import java.applet.*;public class Applet1 extends Applet int a =26,82,-3,65,18,9;doubl

18、e b =3.6,57.2,8.5,78.8;public void paint(Graphics g)g.drawString(数组a 的最小元素的值为: + arrayMin(a),20,20); g.drawString(数组b 的最小元素的值为: + arrayMin(b),20,40); int arrayMin(int x )int y=x0;for(int i=1; ixi) y=xi;return y;double arrayMin(double x )double y=x0;for(int i=1; ixi) y=xi;return y;2. 请编写一个Application

19、,其主类名为Class1,其中包含三个同名方法mySqrt(),它们都只有一个参数,参数的类型分别为int型、float型和double型,它们的功能均为返回参数的平方根,返回值的类型与参数的类型相同。在主方法main( ) 中调用上面的三个方法,这三个方法的参数均来自命令行参数,最后将计算结果输出在屏幕上。程序public class Class1static int n;public static void main (String args)if(args.length = 3)int n;float f;double d;n=Integer.parseInt(args0);f=Floa

20、t.valueOf(args1).floatValue( );d=Double.valueOf(args2).doubleValue( );System.out.println(n+的平方根为: +mySqrt(n);System.out.println(f+的平方根为: +mySqrt(f);System.out.println(d+的平方根为: +mySqrt(d); else System.out.println(缺命令行参数!); System.exit(-1); static int mySqrt(int x)return (int)Math.sqrt(x); static floa

21、t mySqrt(float x) return (float)Math.sqrt(x); static double mySqrt(double x) return Math.sqrt(x); 3. 请编写一个Applet,其主类名为Applet1,其中包含三个同名方法addM(int x, byte y)、addM(float x,double y)、addM(double x,double y),它们的功能均为求两个参数之和,返回值类型与第一个参数的类型相同。在主类Applet1中,通过paint( )方法调用上面的三个方法,实现12345+67、89.6f+6.9e-8、0.+32.1

22、,然后将计算结果输出,输出位置分别为坐标(20,40)、(20,60)、(20,80)。程序import java.awt.*;import java.applet.*;public class Applet1 extends Applet public void paint(Graphics g)g.drawString(12345+67 = + addM(12345,67),20,40); g.drawString(89.6+6.9e-8 = + addM(89.6f,6.9e-8),20,60); g.drawString(0.+32.1 = + addM(0.,32.1),20,80)

23、; int addM(int x, byte y)return x+y; float addM(float x,double y)return (float)(x+y); double addM(double x,double y)return x+y; 练习4(3)掌握: (1) 类的继承。 (2) 在子类中如何操作父类中的私有属性。 (3) 变量的作用域。1. 请编写Applet,它由三个类定义组成,类名分别为A、B和Applet1:类A中定义了一个类型为float的属性f和一个类型为byte的私有属性k;类A还定义了一个带有一个参数的构造函数(用于初始化f),和两个公共方法setk( )

24、和getk( ), 其中setk( ) 的功能为给私有属性k赋值,getk( )的功能为返回私有属性k的值。类B是类A的子类,其中仅定义了一个类型为boolean的属性b和一个带两个参数的构造函数(用来为父类中的变量f和本类的变量b做初始化)。主类Applet1中定义了一个初值为123的int型变量n和一个B类的对象x,请通过创建x为上述f和b赋值(f的值为68.963,b的值为true); 在paint()方法中, 给A类的私有属性k赋值66,然后显示f,k,b,n的值。程序import java.awt.*;import java.applet.*;public class Applet1

25、 extends Applet int n=123;B x=new B(68.963f,true);public void paint(Graphics g)x.setk(byte)66);g.drawString(f=+x.f+ k=+x.getk( )+ b=+x.b+ n=+n,10,20); class Afloat f;private byte k;A(float f1) f=f1; public byte getk( ) return k; public void setk(byte m) k=m; class B extends Aboolean b;B(float ff,boo

26、lean bb) super(ff); b=bb; 2. 请按如下要求定义两个类A和B, 类A中定义一个double 类型变量d(将其赋值为8.8)和一个方法int_d(double dd ),该方法的功能是返回参数dd的整数部分。类B是类A的子类,其中定义一个float 类型变量f(将其赋值为18.3)和一个方法int_f(float ff ),该方法的功能是返回参数ff的整数部分。编写一个Application,创建类B的对象b,在主方法main( ) 中先显示d和f的值,然后分别以d和f为实在参数调用int_d( )方法和int_f( )方法,并将它们的返回值显示在屏幕上。程序publi

27、c class Class1public static void main (String args)B b=new B( );System.out.println(d=+b.d+ f=+b.f);System.out.println(d的整数部分=+_d(b.d)+ f的整数部分=+_f(b.f);class Adouble d=8.8;int int_d(double dd) return (int)dd; class B extends Afloat f=18.3f; int int_f(float ff) return (int)ff; 3. 请编写一个Applic

28、ation ,在其主类中定义一个int 类型变量i ,并令其初值为123 ;主类中还定义了 m1( )和m2( )等两个方法。在主方法main( ) 和方法m1( )中也各定义一个int 类型变量i ,它们的初值分别为456和789 ;方法m1( )的功能是输出它的局部变量i的值;方法m2( )的功能是先输出类变量i 的值 ,然后使类变量i 增加值 6后再次输出其值 ;主方法main( ) 的功能是先输出它的局部变量i的值,然后先后调用m1( )和m2( )实现它们的功能。程序public class Class1static int i=123;public static void main

29、 (String args) int i=456; System.out.println(main( ) 中的 i=+i);m1( );m2( );static void m1( )int i=789;System.out.println(m1( ) 中的 i=+i);static void m2( )System.out.println(类变量 i=+i);i+=6;System.out.println(加 6后的类变量 i=+i);练习5(5)掌握:(1)方法的参数为类对象、方法的返回值为类对象。 (2)方法覆盖:在子类中调用被子类覆盖了的父类的同名方法。 (3)属性隐藏:在子类中访问被子

30、类隐藏了的父类的同名属性。 (4)构造函数的重载。1. 请编写一个Applet,它由两个类定义组成:类A中定义了short型变量i和char型变量ch,及一个带两个参数的构造函数(为变量i和ch做初始化)。主类Applet1中创建了两个A类的对象x1(i的初始值为12,ch的初始值为6)和x2(i的初始值为62,ch的初始值为65),还定义了一个方法b,b的参数和返回值均为A类的对象,功能为将参数对象的属性i加3,属性ch也加3,使返回结果为另一个A类的对象(即不破坏实在参数的值)。请在paint()方法中先输出x1、x2的属性值,然后再分别以x1、x2为实在参数调用方法b( ),并输出调用结

31、果,最后再次输出x1、x2的属性值。程序import java.awt.*;import java.applet.*;public class Applet1 extends Applet A x1,x2;public void init( )x1=new A(short)12,6);x2=new A(short)62,(char)65);public void paint(Graphics g)A a1=new A(short)0, );A a2=new A(short)0, );g.drawString(对象x1的属性值: i= + x 1.i+ ch=+ x 1.ch,20,20); g

32、.drawString(对象x1的属性值: i= + x 2.i+ ch=+ x 2.ch,20,40); a1=b(x1);a2=b(x2); g.drawString(以x1为实参调用方法b( ) 生成的新的A类对象的属性值: i= +a1.i+ ch=+a1.ch,20,60); g.drawString(以x2为实参调用方法b( ) 生成的新的A类对象的属性值: i= +a2.i+ ch=+a2.ch,20,80); g.drawString(调用后,对象x1的属性值: i= + x 1.i+ ch=+ x 1.ch,20,100); g.drawString(调用后,对象x1的属性值

33、: i= + x 2.i+ ch=+ x 2.ch,20,120); A b(A y)A a=new A(short)0, );a.i=(short)(y.i+3); a.ch=(char)(y.ch+3);return a;class Ashort i;char ch;A(short i1,char c1) i=i1; ch=c1; 2. 请按如下要求定义两个类A和B, 类A中定义一个char类型属性x(将其赋值为65)和一个在小程序窗口中输出x值的方法myPrint()。类B是类A的子类,其中定义一个int 类型属性y(将其赋值为16)和String类型的属性s(将其赋值为“java pr

34、ogram!”); 类B中 也定义了一个名为myPrint的方法,其功能为在小程序窗口中输出y和s值;类B中还有一个方法printAll( ),该方法中分别调用父类和子类的myPrint()方法做输出。编写一个Applet,在主类Applet1中创建类B的对象b,调用printAll( )方法输出对象b 的属性值。程序import java.awt.*;import java.applet.*;public class Applet1 extends Applet B b=new B( );public void paint(Graphics g)b.printAll( g);class Ac

35、har x=65; void myPrint(Graphics g)g.drawString(x=+x,20,20);class B extends Aint y=16;String s=java program!;void myPrint(Graphics g)g.drawString(y=+y+ s=+s,20,40); void printAll( Graphics g)super.myPrint(g);myPrint(g); 3. 请按如下要求定义两个类A和B, 类A中定义一个方法area(float r), 其返回值类型为float型,该方法的功能是返回半径为r的圆的面积(圆的面积公

36、式为:pr2,其中 r是圆的半径)。类B是类A的子类,其中也定义了一个名为area的方法area(float r),该方法的功能是返回半径为r的球的表面积(球的表面积的计算公式为:4r2,其中r为球的半径),返回值类型也为float型;在类B中还定义了另一个方法myPrint(float r),功能是分别调用父类和子类的方法area( )计算半径相同的圆的面积和球的表面积并输出调用结果。编写一个Application,创建类B的对象b,在主方法main( )中调用myPrint(float r), 输出半径为1.2的圆的面积和半径为1.2的球的表面积。程序public class Class1

37、public static void main (String args) B b=new B( );b.myPrint(1.2f ); class A float rear(float r)return (float)Math.PI*r*r; class B extends Afloat rear(float r)return 4*(float)Math.PI*r*r; void myPrint(float r)System.out.println(半径为 +r+的圆的面积=+super.rear(r) + 同半径的球的表面积=+rear(r);4. 请编写Applet,它由三个类定义组成:

38、 类A中只定义了一个类型为String的对象x和带有一个参数的构造函数(用来初始化x);类B是类A的子类,其中定义了一个int类型的变量x和一个带两个参数的构造函数(用来为父类中的对象x和类B中的变量x做初始化),还定义了一个方法myPrint( ),功能为输出父类A中的x和其子类B 中的x的值;主类Applet1中定义了B类的对象b,请通过创建b为上述两个x赋值(类A中的x的值为“这是父类的x.”, 类B中的x的值为68),通过paint()方法在坐标(20,30)处显示两个x的值。程序import java.awt.*;import java.applet.*;public class A

39、pplet1 extends Applet B b=new B(这是父类的x.,68 );public void paint(Graphics g)b.myPrint(g); class A String x;A(String x1)x=x1;class B extends Aint x;B(String x1,int x2)super(x1); x=x2;void myPrint(Graphics g)g.drawString(父类A中x的值=+super.x+ 子类B中x的值=+x,20,30); 5. 请编写Applet,它由三个类定义组成, 类名分别为A、B和Applet1:类A中定义

40、了类型为int的变量i、类型为float的变量f和类型为char的变量ch;类A还定义了三个构造函数,其中,第一个构造函数带有一个int类型的参数(用于初始化i),第二个构造函数带有两个参数(参数类型分别为int和float,用于初始化i和f), 第三个构造函数带有三个参数(参数类型分别为int、float和char,用于初始化i、f和ch)。类B是类A的子类,其中仅定义了一个类型为boolean的变量b和一个带四个参数的构造函数(用来为父类中的变量i、f、ch和本类的变量b做初始化)。主类Applet1中定义了一个初值为32.6的double型变量d和一个B类的对象b,请通过创建b为上述i、

41、f、ch和b赋值(i的值为50,f的值为7.2,ch的值为h,b的值为true),用paint()方法在(10,30)位置处显示i,f,ch,b,d的值。程序import java.awt.*;import java.applet.*;public class Applet1 extends Applet double d=32.6;B b=new B(50,7.2f,h,true );public void paint(Graphics g)g.drawString(i=+b.i+ f=+b.f+ ch=+b.ch+ b=+b.b+ d=+d,10,30);class A int i;flo

42、at f;char ch;A(int x)i=x;A(int x,float y)this(x); f=y; A(int x,float y,char z)this(x,y); ch=z;class B extends Aboolean b;B(int x,float y,char z,boolean w) super(x,y,z); b=w; 练习6(5)掌握:接口、抽象类、最终类的编程;字符串的使用。1. 定义接口A,接口内有两个方法: method1(int x)和method2(int x,int y),它们的返回值类型均为int。请编写一个Applet,并使其实现接口A:令方法met

43、hod1(int x)的功能是求5的x次方、方法method2(int x,int y) 的功能是求两参数的最大值。在paint()方法中调用这两个方法,显示method1(2)和 method2(2,8)的结果。程序import java.awt.*;import java.applet.*;public class Applet1 extends Applet implements Apublic void paint(Graphics g)g.drawString(调用method1(2)的结果: +method1(2),20,20);g.drawString(调用method2(2,8

44、)的结果: +method2(2,8),20,40);public int method1(int x) int result=1;for(int i=1;iy?x:y;interface Apublic abstract int method1(int x); public abstract int method2(int x,int y); 2. 定义名为VolumeArea的抽象类,在其中定义圆周率p的值为3.14159,并定义两个抽象方法volume(double r)和area(double r),它们的返回值类型均为float。再定义以类VolumeArea为父类的子类Volume

45、AndArea,在该子类中实现父类中的抽象方法:方法volume(double r) 的功能是求半径为r的球的体积(公式为:4pr33);方法area(double r)的功能是求半径为r的圆的面积(公式为:pr2)。请编写一个Application ,在其主类中定义一个VolumeAndArea类的对象x,通过对象x求半径为r(r的值由命令行给定)的球的体积及该球最大切面的圆的面积,并输出计算结果。程序public class Class1 static VolumeAndArea x=new VolumeAndArea( ); public static void main(String args) float r=Float.valueOf(args0).floatValue( ); System.out.println(半径为+r+的球的体积=+x.volume(r); System.out.println(半径为+r+的圆的面积=+ x.area(r); abstract class VolumeArea static final float myPI=3.14159f; public abstract float volume(double r); public abstract float area(double r);class VolumeAndA

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论