Java程序练习100题
更新时间:2023-09-28 20:24:01 阅读量: 综合文库 文档下载
- 400套JAVa程序推荐度:
- 相关推荐
上机练习题
一、java语言基础和面向对象
练习1(4)
掌握:各种数据类型变量的定义和访问,各种数据类型常量的使用,数据类型转换。
1. 编写Applet,其功能为:取两个小于1000的正随机数,若两个数均小于10,先将它们都放大50倍,否则不改变这两个数。最后,求这两个数的和并将结果输出。要求这些功能在主类的方法init( ) 中实现,并使输出结果仅保留小数点后4位(不需四捨五入)。 @程序
import java.awt.*; import java.applet.*;
public class Applet1 extends Applet { public 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(x<10&y<10) { x*=50; y*=50; } out1.setText(\约等于 \ out2.setText(\ } }
2. 请编写一个Applet,其功能为:取一个小于10000的正随机整数,并输出该数的平方根。要求这些功能在主类的方法paint( ) 中实现,并使输出结果在四捨五入后保留小数点后4位。 @程序
import java.awt.*; import java.applet.*;
public class Applet1 extends Applet { public void paint(Graphics g) { int k;
k=(int)(Math.random( )*1000); g.drawString(\的平方根约等于 \ (int)((Math.sqrt(k)+0.00005)*10000)/10000.0,20,20); } }
3. 编写一个Applet,其功能为:取一个50~200之间的正随机整数,如果该数为奇数则求它的平方根并转换成float型数后再输出;如果该数为偶数则求它的平方并输出。 @程序
import java.awt.*; import java.applet.*;
public class Applet1 extends Applet { public void paint(Graphics g) { int k; k=50+(int)(Math.random( )*150); if(k%2!=0) g.drawString(\的平方根约等于 \ else g.drawString(\的平方等于 \ } }
4. 请编写一个Application,其功能为:取一个小于800的正随机整数,将其以如下形式输出: 所取随机数为:*** 它的百位数字为:* 它的十位数字为:* 它的个位数字为:* @程序
//import java.io.*;
public class Class1 { public static void main (String[] args) { int x=(int)(Math.random( )*800); System.out.println(\所取随机数为:\ System.out.println(\它的百位数字为:\ System.out.println(\它的十位数字为:\ System.out.println(\它的个位数字为:\ //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、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),行隔为20像素。 @程序
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 float[a.length]; float[ ] y=new float[b.length]; x=square(a); y=square(b); for(int i=0; i 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;方法sqrt_sum ( )的参数为double类型的数组,返回值类型为float型,功能是求参数各元素的平方根之和。请在主方法main()中分别以a和b为实在参数调用方法sqrt_sum ( ),并将返回值输出在屏幕上。 @程序 //import java.io.*; public class Class1 { } 3. 请编写一个Application实现如下功能:在主类中定义方法f1(int n) 和方法f2(int n),它们的功能均为求 n!,方法f1( ) 用循环实现,方法f2( )用递归实现 。在主方法main( ) 中,以4为实在参数分别调用方法f1( ) 和方法f2( ),并输出调用结果。 @程序 //import java.io.*; public class Class1 { public static void main (String[] args) { System.out.println(\用循环实现求 n! 的结果(n=4):\System.out.println(\用递归实现求 n! 的结果(n=4):\//try{ char c=(char)System.in.read( );}catch(IOException e){ } static 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) { } static float sqrt_sum(double[ ] x) { } double y=0.0; for(int i=0; i System.out.println(\数组a各元素的平方根之和为:\System.out.println(\数组b各元素的平方根之和为:\//try{ char c=(char)System.in.read( );}catch(IOException e){ } } static long f1(int n) { long k=1; for(int i=1;i<=n;i++) k*=i; } static long f2(int n) { } if(n==1) return 1; else return n*f2(n-1); return k; } 4. 请编写一个Application实现如下功能:接受命令行中给出的三个参数x1、x2和op,其中x1和x2为float型数,op是某个算数运算符(+、 —、*、/ 之一),请以如下形式输出 x1 和x2执行 op 运算后的结果(假设x1的值为269,x2的值为18,op为运算符—): 269 – 18=251 @程序 public class Class1 { public static void main (String[] args) { float x,y; char op; if(args.length >= 3) { x=Float.valueOf(args[0]).floatValue( ); y=Float.valueOf(args[1]).floatValue( ); op=args[2].charAt(0); switch(op) { case '+': System.out.println(x+\ break; case '-': System.out.println(x+\ break; case '*': System.out.println(x+\ break; case '/': System.out.println(x+\ 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)的功能是生成元素值是50~100之间的随机值的int型数组,数组元素的个数由参数n指定。在应用程序的main( )方法中,用命令行传入的整数作为myArray(int n) 方法调用时的实际参数,生成一个整型数组,并调用方法printA( )输出该数组的所有元素。 @程序 public class Class1 { static int n; public static void main (String[] args) { if(args.length > 0) { n=Integer.parseInt(args[0]); int[ ] a=new int[n]; a=myArray(n); printA(a); } else { System.out.println(\缺命令行参数!\ System.exit(-1); } } static void printA(int[ ] x) { for(int i=0; i< x.length; i++) System.out.print(x[i]+\ \ System.out.println( ); return; } static int[ ] myArray(int k) { int x[ ]=new int[k]; for(int i=0; i< k; i++) x[i]=50+(int)(Math.random( )*50); return x; } } 练习3(3) 掌握: 方法的重载。 1. 请编写一个Applet,其主类名为Applet1,其中包含两个同名方法arrayMin( ),它们都只有一个参数,其中一个arrayMin( )方法的参数为int型数组,返回值类型为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}; double b[ ]={3.6,57.2,8.5,78.8}; public void paint(Graphics g) { g.drawString(\数组a 的最小元素的值为: \ g.drawString(\数组b 的最小元素的值为: \ } int arrayMin(int x[ ]) { int y=x[0]; for(int i=1; i< x.length; i++) if(y>x[i]) y=x[i]; return y; } double arrayMin(double x[ ]) { double y=x[0]; for(int i=1; i< x.length; i++) if(y>x[i]) y=x[i]; return y; } } 2. 请编写一个Application,其主类名为Class1,其中包含三个同名方法mySqrt(),它们都只有一个参数,参数的类型分别为int型、float型和double型,它们的功能均为返回参数的平方根,返回值的类型与参数的类型相同。在主方法main( ) 中调用上面的三个方法,这三个方法的参数均来自命令行参数,最后将计算结果输出在屏幕上。 @程序 public class Class1 { static int n; public static void main (String[] args) { if(args.length >= 3) { int n; float f; double d; n=Integer.parseInt(args[0]); f=Float.valueOf(args[1]).floatValue( ); d=Double.valueOf(args[2]).doubleValue( ); System.out.println(n+\的平方根为: \ System.out.println(f+\的平方根为: \ System.out.println(d+\的平方根为: \ } else { System.out.println(\缺命令行参数!\ System.exit(-1); } } static int mySqrt(int x) { return (int)Math.sqrt(x); } static float 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.987654321+32.1,然后将计算结果输出,输出位置分别为坐标(20,40)、(20,60)、(20,80)。 @程序 import java.awt.*; import java.applet.*; public class Applet1 extends Applet { public void paint(Graphics g) { g.drawString(\ g.drawString(\ g.drawString(\ } 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( )和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 extends Applet { int n=123; B x=new B(68.963f,true); public void paint(Graphics g) { x.setk((byte)66); g.drawString(\ k=\ b=\ n=\ } } class A { float f; private byte k; A(float f1){ f=f1; } public byte getk( ){ return k; } public void setk(byte m){ k=m; } } class B extends A { boolean b; B(float ff,boolean 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( )方法,并将它们的返回值显示在屏幕上。 @程序 public class Class1 { public static void main (String[] args) { B b=new B( ); System.out.println(\ f=\ System.out.println(\的整数部分=\ f的整数部分=\ } } class A { double d=8.8; int int_d(double dd){ return (int)dd; } } class B extends A { float f=18.3f; int int_f(float ff){ return (int)ff; } } 3. 请编写一个Application ,在其主类中定义一个int 类型变量i ,并令其初值为123 ;主类中还定义了 m1( )和m2( )等两个方法。在主方法main( ) 和方法m1( )中也各定义一个int 类型变量i ,它们的初值分别为456和789 ;方法m1( )的功能是输出它的局部变量i的值;方法m2( )的功能是先输出类变量i 的值 ,然后使类变量i 增加值 6后再次输出其值 ;主方法main( ) 的功能是先输出它的局部变量i的值,然后先后调用m1( )和m2( )实现它们的功能。 @程序 public class Class1 { static int i=123; public static void main (String[] args) { int i=456; System.out.println(\中的 i=\ m1( ); m2( ); } static void m1( ) { int i=789; System.out.println(\中的 i=\ } static void m2( ) { System.out.println(\类变量 i=\ i+=6; System.out.println(\加 6后的类变量 i=\ } } 练习5(5) 掌握:(1)方法的参数为类对象、方法的返回值为类对象。 (2)方法覆盖:在子类中调用被子类覆盖了的父类的同名方法。 (3)属性隐藏:在子类中访问被子类隐藏了的父类的同名属性。 (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( ),并输出调用结果,最后再次输出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=\ ch=\ g.drawString(\对象x1的属性值: i=\ ch=\ a1=b(x1); a2=b(x2); g.drawString(\以x1为实参调用方法b( ) 生成的新的A类对象的属性值: i=\ +a1.i+\ ch=\ g.drawString(\以x2为实参调用方法b( ) 生成的新的A类对象的属性值: i=\ +a2.i+\ ch=\ g.drawString(\调用后,对象x1的属性值: i=\ ch=\ g.drawString(\调用后,对象x1的属性值: i=\ ch=\ } 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 A { short 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 program!”); 类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 A { char x=65; void myPrint(Graphics g) { g.drawString(\} } class B extends A { int y=16; String s=\ void myPrint(Graphics g) { g.drawString(\ s=\ } void printAll( Graphics g) { super.myPrint(g); myPrint(g); } } 3. 请按如下要求定义两个类A和B, 类A中定义一个方法area(float r), 其返回值类型为float型,该方法的功能是返回半径为r的圆的面积(圆的面积公式为:?r2,其中 r是圆的半径)。类B是类A的子类,其中也定义了一个名为area的方法area(float r),该方法的功能是返回半径为r的球的表面积(球的表面积的计算公式为:4πr2,其中r为球的半径),返回值类型也为float型;在类B中还定义了另一个方法myPrint(float r),功能是分别调用父类和子类的方法area( )计算半径相同的圆的面积和球的表面积并输出调用结果。编写一个Application,创建类B的对象b,在主方法main( )中调用myPrint(float r), 输出半径为1.2的圆的面积和半径为1.2的球的表面积。 @程序 public class Class1 { 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 A { float rear(float r) { return 4*(float)Math.PI*r*r; } void myPrint(float r) { System.out.println(\半径为 \的圆的面积=\ +\ 同半径的球的表面积=\ } } 4. 请编写Applet,它由三个类定义组成: 类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 Applet1 extends Applet { } class A { String x; } class B extends A { } 5. 请编写Applet,它由三个类定义组成, 类名分别为A、B和Applet1:类A中定义了类型为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、f、ch和b赋值(i的值为50,f的值为7.2,ch的值为’h’,b的值为true),用paint()方法在(10,30)位置处显示i,f,ch,b,d的值。 int x; B(String x1,int x2){ super(x1); x=x2; void myPrint(Graphics g) { g.drawString(\父类A中x的值=\ 子类B中x的值=\ } } A(String x1){ x=x1; } B b=new B(\这是父类的x.\public void paint(Graphics g) { b.myPrint(g); } @程序 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(\ f=\ ch=\ b=\ d=\ } } class A { int i; float 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 A { boolean 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:令方法method1(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 A { public void paint(Graphics g) { g.drawString(\调用method1(2)的结果: \ g.drawString(\调用method2(2,8)的结果: \ } public int method1(int x) { int result=1; for(int i=1;i<=x;i++) result*=5; return result; } public int method2(int x,int y) { return x>y?x:y; } } interface A { public abstract int method1(int x); public abstract int method2(int x,int y); } 2. 定义名为VolumeArea的抽象类,在其中定义圆周率?的值为3.14159,并定义两个抽象方法volume(double r)和area(double r),它们的返回值类型均为float。再定义以类VolumeArea为父类的子类VolumeAndArea,在该子类中实现父类中的抽象方法:方法volume(double r) 的功能是求半径为r的球的体积(公式为:4?r3?3);方法area(double r)的功能是求半径为r的圆的面积(公式为:?r2)。请编写一个Application ,在其主类中定义一个VolumeAndArea类的对象x,通过对象x求半径为r(r的值由命令行给定)的球的体积及该球最大切面的圆的面积,并输出计算结果。 @程序 public class Class1 { static VolumeAndArea x=new VolumeAndArea( ); public static void main(String[ ] args) { float r=Float.valueOf(args[0]).floatValue( ); System.out.println(\半径为\的球的体积=\ System.out.println(\半径为\的圆的面积=\ } } abstract class VolumeArea { static final float myPI=3.14159f; public abstract float volume(double r); public abstract float area(double r); } class VolumeAndArea extends VolumeArea { public float volume(double r) { return (float)(4*myPI*r*r*r/3); } public float area(double r) { return (float)(myPI*r*r); } } 3. 定义类A,在其中定义一个final变量myPI,其类型为float,值为3.1416;类A中还定义一个final方法 m1(float r),该方法返回值类型为float,功能是求半径为r的圆的周长(公式为:2?r)。再定义类A的子类B,B为final类,其中定义一个返回值类型为void的方法 m2(float r),功能是先调用父类的方法m1( )求半径为r的圆的周长并输出计算结果,然后输出同一个圆的面积(公式为:?r2)。请编写一个Application ,利用类B计算并输出半径为5的圆的周长和面积。 @程序 public class Class1 { static B x=new B( ); public static void main(String[ ] args) { x.m2(5); } } class A { final float myPI=3.1416f; public final float m1(float r) { return 2*myPI*r; } } final class B extends A { public void m2(float r) { System.out.println(\半径为\的圆的周长=\ System.out.println(\半径为\的圆的面积=\ } } 4.编写应用程序,功能为:从命令行传入一个包含十个字符的字符串,把该字符串与程序中给定的字符串\依次比较,统计两个串中对应字符相等的数目。然后输出命令行输入的字符串,并把两个串中对应字符不相等的字符替换为'@'后生成的新串输出,最后输出两个串中相等字符的数目。 @程序 public class Class1 { public static void main(String args[]) throws IOException { if(args[0].length()<10) System.out.print(\else } } { } String str=new String(\int n=0; System.out.print(\for (int x=0;x System.out.print(\ \ System.out.println(); System.out.print(\ Student answer:\for (int x=0;x System.out.println( ); System.out.println(\ if (args[0].charAt(x)==str.charAt(x)) { n++; System.out.print(\ \} System.out.print(\ \ else 5. 请编写一个Application实现如下功能:接受命令行中给出的一个字母串,先将该串原样输出,然后判断该串的第一个字母是否为大写,若是大写则统计该串中大写字母的个数,并将所有大写字母输出;否则输出信息串”第一个字母不是大写字母!”。 @程序 public class Class1 { public static void main(String args[]) { int count=0; if(args.length!=0) { System.out.println(args[0]); if((int)args[0].charAt(0)>=65 && (int)args[0].charAt(0)<=90) { for(int i=0;i=65 && (int)args[0].charAt(i)<=90) { System.out.print(args[0].charAt(i)); Count++; } System.out.println( ); System.out.println(―共有 ‖+count+‖ 个大写字母。‖); } else System.out.println(\第一个字母不是大写字母!\ } } } else System.out.println(\请给出命令行参数!\ 练习7(5) 掌握:命令行传参数。 1.请编写一个实现如下功能的Application:比较命令行中给出的两个整数是否相等,并根据比较结果显示\相等\或\不相等\。 public class Class1 { public static void main (String[] args) { int x,y; String str=\ if(args.length < 2) { System.out.println(\请在命令行输入两个参数\ System.exit(-1); } x=Integer.parseInt(args[0]); y=Integer.parseInt(args[1]); if (x==y) str=\命令行输入的两个参数相等\ else str=\命令行输入的两个参数不相等\ System.out.println( str ); } } 2.编写一个Application程序,比较命令行中给出的两个字符串是否相等,并输出比较的结果。 import java.io.*; public class Class1 { public static void main (String[] args) { if( args.length < 2 ) { System.out.println( \ string2\ System.exit(-1); } if(args[0].equals(args[1])) System.out.println( args[0]+\和 \相等 \ else System.out.println( args[0]+\和 \不等 \ } } 3.从命令行传入3个整数,求3个整数的和、积、最大值、最小值。 public class Class1 { public static void main (String[] args) { int n=args.length; if(n<3) System.out.println(\请输入三个整数!\ else { int a,b,c; a=Integer.parseInt(args[0]); b=Integer.parseInt(args[1]); c=Integer.parseInt(args[2]); System.out.println(\和:\ System.out.println(\积:\ System.out.println(\最大值:\ System.out.println(\最小值:\ } } } 4.请编写一个Application实现如下功能:通过命令行中给出的float型参数x, 和int型参数y(如果参数少于两个,给出提示后退出系统),调用Math类中的方法求x的y次方并输出。 import java.io.*; public class Class1 { public static void main (String[] args) { int x,y; String str=\ if(args.length < 2) { System.out.println(\ number2\ System.exit(-1); } x=Float.valueOf(args[0]).floatValue( ); y=Integer.parseInt(args[1]); str=str+x+\的 \次方 = \ System.out.println( str ); } } 5.编写Application,求从命令行传入任意多个整数的最大值、最小值、平均值。 public class Class1 { public static void main (String[] args) { int n=args.length; if(n==0) System.out.println(\ else { int x[]=new int[n]; for(int i=0;i static int ArrayMax( int array[] ) { int max = array[0]; for( int i =1; i < array.length; i++) { if ( array[i] > max ) { max = array[i]; } } return max; } static int ArrayMin( int array[] ) { int min = array[0]; for( int i =1; i < array.length; i++) if ( array[i] < min ) min = array[i]; return min; } static int ArrayAve( int array[] ) { int sum=0; for( int i =0; i < array.length; i++) sum+=array[i]; return sum/array.length; } } 6.请编写一个实现如下功能的Application:从命令行依次取三个参数 x, y, op 做算术运算,其中 x, y为 int 型数据,op 为运算符(+、-、×、÷ 之一),请显示 x op y 的结果。 public class MainParameters { public static void main(String args[]) { int x, y; char op; String str=\ j = myList.getSelectedIndex(); repaint(); } public void paint( Graphics g ) { if(b) switch(j) { case 0: g.setColor( colors[j] );g.drawRect(10,10,30,60); break; case 1: g.setColor( colors[j] );g.drawOval(10,10,30,30); break; case 2: g.setColor( colors[j] );g.drawOval(10,10,60,30); break; case 3: g.setColor( colors[j] );g.fillArc(10,10,80,60,30,30); break; case 4: g.setColor( colors[j] );g.drawLine(10,10,60,60); } } } 练习14(11) 掌握:(1) 鼠标事件(鼠标进入、移出、压下、点击、释放)的编程。 (2) 键盘事件(按下键、松开键、点击键)的编程。 (3) 布局管理器。 1. 编写Applet, 当鼠标进入Applet时,通过paint()方法以(60,60)为左上角坐标,填充一个颜色为黄色的、边长为60的正方形;鼠标移出时,以(60,120)为左上角坐标,画一个颜色为绿色的、边长为30的正方形框。 @程序 import java.awt.*; import java.applet.*; import java.awt.event.*; public class Applet1 extends Applet implements MouseListener { int i; public void init(){ addMouseListener(this); } public void paint(Graphics g) { if(i==1) { g.setColor(Color. yellow); g.fillRect(60,60,60,60); } if(i==2) { g.setColor(Color.green); g.drawRect(60,120,30,30); } } public void mouseClicked(MouseEvent e){ } public void mousePressed(MouseEvent e){ } public void mouseEntered(MouseEvent e){ i=1; repaint(); } public void mouseExited(MouseEvent e) { i=2; repaint(); } public void mouseReleased(MouseEvent e) { } } 2. 编写Applet, 当鼠标进入Applet时,通过paint()方法在坐标(20,50)处,显示一幅图像,图像名称为a.gif,显示的高、宽分别为50、80;鼠标移出时,在坐标(70,130)处,显示另一幅图像,图像名称为b.gif,显示的高、宽分别为80、60。这些图像与嵌入该小程序的网页在同一目录下(程 序中用到的图像在计算机中找)。 @程序 import java.awt.*; import java.applet.*; import java.awt.event.*; public class Applet1 extends Applet implements MouseListener { int i; Image pic1,pic2; public void init() { pic1=getImage(getDocumentBase(),\ pic2=getImage(getDocumentBase(),\ addMouseListener(this); } public void paint(Graphics g) { if(i==1) { g.drawImage(pic1,20,50,50,80,this); } if(i==2) { g.drawImage(pic2,70,130,80,60,this); } } public void mouseClicked(MouseEvent e) { } public void mousePressed(MouseEvent e) { } public void mouseEntered(MouseEvent e) { i=1; repaint(); } public void mouseExited(MouseEvent e) { i=2; repaint(); } public void mouseReleased(MouseEvent e) { } } 3. 编写Applet, 通过paint()方法在鼠标压下时,在坐标(30,30)处显示一幅图像,图像名称为a.gif,显示的高、宽分别为90、90(程序中用到的图像在计算机中找,并使其与嵌入该小程序的网页在同一目录)。点击鼠标时,在窗口的状态栏中输出字符串“这个图像真美丽!”。 @程序 import java.awt.*; import java.applet.*; import java.awt.event.*; public class Applet1 extends Applet implements MouseListener { int i; Image pic; public void init() { pic=getImage(getDocumentBase(),\ addMouseListener(this); } public void paint(Graphics g) { if(i==1) { g.drawImage(pic,30,30,90,90,this); } if(i==2) showStatus(“这个图像真美丽!”); } public void mouseClicked(MouseEvent e) { i=2; repaint(); } public void mousePressed(MouseEvent e) { i=1; repaint(); } public void mouseEntered(MouseEvent e){ } public void mouseExited(MouseEvent e){ } public void mouseReleased(MouseEvent e){ } } 4. 编写Applet, 当压下鼠标时,在鼠标压下处显示字符串“释放鼠标将显示图象”,要求显示字体的名称为\、普通体、字体大小为25。当释放鼠标时,以鼠标释放处为左上角坐标,显示一幅jpg图像,图像显示的宽、高分别为200、120像素(图像在计算机中查找)。 @程序 import java.awt.*; import java.applet.*; import java.awt.event.*; public class Applet1 extends Applet implements MouseListener { int x,y,k; Image pic; public void init() { pic=getImage(getDocumentBase(),\ addMouseListener(this); } public void paint(Graphics g) { if(k==1) { Font f1=new Font(\ g.setFont(f1); g.drawString(\释放鼠标将显示图象。\ } if(k==2) { g.drawImage(pic,x,y,200,160,this); } } public void mouseClicked(MouseEvent e){ } public void mousePressed(MouseEvent e) { k=1; x=e.getX(); y=e.getY(); repaint(); } public void mouseEntered(MouseEvent e){ } public void mouseExited(MouseEvent e){ } public void mouseReleased(MouseEvent e) { k=2; x=e.getX(); y=e.getY(); repaint(); } } 5.编写Applet, 当按下键盘键时,在Applet中通过paint()方法,在(25,20)位置处显示你按下的键的名称。 @程序 import java.awt.*; import java .awt .event .*; import java.applet.*; public class Applet1 extends Applet implements KeyListener { String name=\public void init() { addKeyListener(this); requestFocus(); } } public void paint(Graphics g) { g.drawString (\你按下的键是:\ public void keyPressed(KeyEvent e) { name=e.getKeyText (e.getKeyCode ()); } } repaint(); } } public void keyReleased(KeyEvent e) { public void keyTyped(KeyEvent e) { 6.编写小程序,响应键盘事件:敲击字母r,改变小程序背景色为red;敲击字母b,改变小程序背景色为blue;敲击字母g,改变小程序背景色为green;其他字母,改变小程序背景色为black。 // Key.java import java.applet.Applet; import java.awt.*; import java.awt.event.*; public class Applet1 extends Applet implements KeyListener { char ch; public void init() { addKeyListener( this ); requestFocus();//获取焦点 } public void paint( Graphics g ) { if(ch=='r'|ch=='R') this.setBackground(Color.red); } public void keyPressed( KeyEvent e )//键压下时执行 { } public void keyReleased( KeyEvent e )//键释放时执行 { } public void keyTyped( KeyEvent e )////键敲击时执行 { ch=e.getKeyChar(); repaint(); } } 7.编写java小程序,在小程序界面画一个彩色球,当压下键盘上的4个方向键时,彩色球能向指定 的方向移动。 import java.awt.*; import java.applet.*; import java.awt.event.*; public class Applet1 extends Applet { char ch; int x=20,y=20; public void init() { this.addKeyListener(new KeyAdapter() { public void keyPressed(KeyEvent e) { if(e.getKeyCode()==e.VK_DOWN) y+=2; if(e.getKeyCode()==e.VK_UP) y-=2; if(e.getKeyCode()==e.VK_RIGHT) x+=2; if(e.getKeyCode()==e.VK_LEFT) x-=2; repaint(); } }); this.requestFocus(); } public void paint(Graphics g) { g.setColor(Color.blue); g.fillOval(x,y,30,30); } } 8.编写小程序,使用内部类响应鼠标点击事件:点击鼠标,以点击处为中心画圆。 import java.awt.*; import java.applet.*; import java.awt.event.*; //点击鼠标,以该点为中心画圆 public class Applet1 extends Applet { int x,y; public void init() { addMouseListener(new MyMouse()); } } } x =Integer.parseInt(args[0]); y =Integer.parseInt(args[1]); op=args[2].charAt(0); switch(op) { case '+' : str=str+x+\ break; case '-' : str=str+x+\ break; case '*' : str=str+x+\ break; case '/' : str=str+x+\ break; default : System.out.println(\不能识别的运算符 \ System.exit(0); } System.out.println(str); 二、异常、多线程和输入输出处理 练习7 异常处理(1) 了解java中异常的处理:除运行时异常外,其他异常必须要捕捉或声明抛弃。例如,多线程编程或输入输出编程中异常的处理。 1.通过下面的程序了解异常的处理、以及异常发生时程序的执行情况。 import java.io.*; public class Class1 { public static void main(String args[]) { int a=5; int b=0; System.out.println(a/b); try { System.out.println(\ System.out.println(a/b); System.out.println(\ } catch(ArithmeticException e) { System.out.println(\除数为0,这是不行的!\ } finally { System.out.println(\ } System.out.println(\异常已发生,但不影响程序的执行!\ } } 练习8 多线程(5) 掌握:java中实现多线程的两种方法,能编写多线程的简单程序。多线程的相关知识还可与管道流结合、或应用他们编写小程序界面的简单动画等(参考练习15)。 1.请编写一个类,类名为subThread ,它是Thread 类的子类。该类中定义了含一个字符串参数的构造函数和run( )方法,方法先在命令行显示线程的名称,然后随机休眠小于1秒的时间,最后显示线程结束信息: \线程名。编写Application,在其中创建subThread类的三个对象t1、t2、t3,它们的名称分别为\、\、\,并启动这三个线程。 public class Class1 { public static void main( String[ ] args ) { Thread t1 = new subThread( \ Thread t2 = new subThread( \ Thread t3 = new subThread( \ t1.start( );t2.start( );t3.start( ); } } class subThread extends Thread { public subThread( String str ) { super( str ); } public void run( ) { System.out.println( \ try { sleep( ( int )( Math.random( ) * 1000 ) ); } catch( InterruptedException e ) { } System.out.println( \ } } 2.请编写一个类,类名为subThread ,它是Thread 类的子类。该类中定义了含一个字符串参数的构造函数和run( )方法,方法中有一个for循环,循环一共进行5次,循环体中先在命令行显示该线程循环到了第几次,然后随机休眠小于1秒的时间,循环结束后显示线程结束信息: 线程名+\。编写Application,在其中创建subThread类的三个对象t1、t2、t3,它们的名称分别为\、\、\,并启动这三个线程。 public class Class1 { public static void main( String[ ] args ) { Thread t1 = new subThread( \ Thread t2 = new subThread( \ Thread t3 = new subThread( \ t1.start( ); t2.start( ); t3.start( ); } } class subThread extends Thread { public subThread( String str ) { super( str ); } public void run( ) { for(int i=1;i<=5;i++) { System.out.println( getName( )+\ try { sleep( ( int )( Math.random( ) * 1000 ) ); } catch( InterruptedException e ) { } } System.out.println( \ } } 3.请编写一个类,类名为MulThread ,类中定义了含一个字符串参数的构造函数,并实现了Runnable接口,接口中的run( )方法如下实现:方法中先在命令行显示该线程信息,然后随机休眠小于1秒的时间,最后后显示线程结束信息: \线程名。编写Application,在其中通过Runnable创建MulThread类的三个线程对象t1、t2、t3,并启动这三个线程。 public class Class1 { public static void main( String[ ] args ) { Runnable r1 =new MulThread( \ Runnable r2 =new MulThread( \ Runnable r3 =new MulThread( \ Thread t1 = new Thread( r1 ); Thread t2 = new Thread( r2 ); Thread t3 = new Thread( r3 ); t1.start( );t2.start( );t3.start( ); } } class MulThread implements Runnable { String s; public MulThread(String str) { s=str;} public void run( ) { System.out.println(s); try { Thread.sleep( ( int ) ( Math.random( ) * 1000 ) ); } catch( InterruptedException e ){ } System.out.println( \ \ } } 4.编写小程序实现一个数字时钟。 import java.awt.*; import java.applet.*; import java.util.Calendar; public class Applet1 extends Applet implements Runnable { Thread timeThread; Font wordFont; int year,month,day; int weekday; int hour,minute,second; public void init() { this.setBackground(Color.black); wordFont=new Font(\楷体_gb2312\ } public void start() { if(timeThread==null) { timeThread=new Thread(this); timeThread.start(); } } public void stop() { if(timeThread!=null) { timeThread.stop(); timeThread=null; } } public void run() { while(true) { Calendar time=Calendar.getInstance();//创建类的实例 year=time.get(Calendar.YEAR); month=time.get(Calendar.MONTH); day=time.get(Calendar.DAY_OF_MONTH ); weekday=time.get(Calendar.DAY_OF_WEEK); hour=time.get(Calendar.HOUR); minute=time.get(Calendar.MINUTE); second=time.get(Calendar.SECOND); repaint (); try { Thread.sleep( 300); } catch (InterruptedException e) { } } } public void paint (Graphics g) { String s1=year+\年\月\日\ String s2=\星期\ String s3=hour+\ g.setFont (wordFont); g.setColor (Color.green); g.drawString (s1, 20, 50); g.drawString (s2, 20, 120); g.drawString (s3, 20, 200); } } 5.编写小程序实现Runnable接口,通过多线程实现在小程序窗口中不断的显示自然数:从1直到100。 import java.awt.*; import java.applet.*; public class Javaapplet extends Applet implements Runnable { int counter=0; Thread t; public void init() { t=new Thread(this); t.start(); } public void run() { while( counter<=100 ) { counter++; try { Thread.sleep(1000); } catch ( InterruptedException e ) { } repaint(); } } public void paint( Graphics g ) { setBackground(Color.black); g.setColor(Color.green); g.setFont(new Font(\ g.drawString( String.valueOf(counter),60,60 ); } } 练习9 输入输出(15) 掌握:java的输入输出处理 1.编写应用程序,使用System.in.read()方法读取用户从键盘输入的字节数据,回车后,把从键盘输入的数据存放到数组buffer中,并将用户输入的数据通过System.out.print()显示在屏幕上。 import java.io.*; public class Class1 { public static void main(String args[]) { byte buffer[]=new byte[128]; int n; try { n=System.in.read(buffer); //把键盘输入的数据读到数组buffer中,返回实际读取的字节数 for(int i=0;i 2.编写应用程序,使用System.in.read()方法读取用户从键盘输入的字节数据,回车后,把从键盘输入的数据存放到数组buffer中,并将用户输入的数据保存为指定路径下的文件。 import java.io.*; public class Class1 { public static void main(String args[]) { byte buffer[]=new byte[128]; int n; try { n=System.in.read(buffer); FileOutputStream out=new FileOutputStream(\追加 //FileOutputStream out=new FileOutputStream(\ out.write(buffer,0,n); out.close( ); } catch(IOException e) { System.out.print(e); } } } 3. 编写java应用程序,使用FileInputStream类对象读取程序本身(或其他目录下的文件)并显示在屏幕上。 import java.io.*; public class Class1 { public static void main (String[] args) { try { //FileInputStream fis=new FileInputStream(\ FileInputStream fis=new FileInputStream(\ int n; while((n=fis.read())!=-1) System.out.print((char)n); fis.close(); } catch(IOException e) { System.out.println(e.toString()); } } } 4. 编写java应用程序,使用FileInputStream类对象读取程序本身(或其他目录下的文件)到字节数组中,并显示在屏幕上(或存储为其他文件)。 import java.io.*;//读取程序本身,显示在屏幕上 public class Class1 { public static void main (String[] args) { try { FileInputStream fis=new FileInputStream(\ byte[] b=new byte[fis.available()]; System.out.println(\文件流的大小:\ int n=fis.read(b); myprint(b); System.out.print(\实际读取的字节数:\ fis.close(); } catch(IOException e) { System.out.println(e.toString()); } } static void myprint(byte[] x) { for(int i=0;i } } 5.编写应用程序,程序中创建一个文件输入流对象fis,读取当前目录下文本文件test1.txt,该文件内容有如下两行文本: Java program is easy. I like it. 从文件输入流fis中读取5个字节数据存放到数组b中,字节数据存放的位置从数组下标3开始。将读取的数据在屏幕输出。 import java.io.*; public class Class1 { public static void main( String[ ] args ) throws IOException { File file = new File(\ FileInputStream fis = new FileInputStream( file); int n=0; byte b[]=new byte[8]; n=fis.read(b,3,5); fis.close(); for(int i=3;i 6.编写应用程序,程序中创建一个文件输出流对象out向当前目录下已有的文件abc.txt(内容为:\)写入字符串\中的所有字符和大写字母'A'。 import java.io.*; public class Class1 { public static void main (String[] x) throws IOException { String s=\ byte[] b; FileOutputStream out=new FileOutputStream(\添加字节数据 b=s.getBytes(); out.write(b,0,b.length); out.write(65);//写入字节数据65---‘A’ out.close(); } } 7.编写两个线程子类,分别用来创建管道输出流和管道输入流,其中管道输出流向管道发送5个0~20之间的随机整数;管道输入流接收管道中传过来的5个随机整数,并求他们的和。编写Java应用程序测试管道流的数据传送。 //TestPipedStream.java import java.io.*; public class TestPipedStream { public static void main( String[] args ) { try {//创建没有连接的管道输出流和管道输入流 PipedOutputStream out = new PipedOutputStream( ); PipedInputStream in = new PipedInputStream( ); out.connect( in );//连接两个管道流 ThreadOut to = new ThreadOut( out ); ThreadIn ti = new ThreadIn( in ); to.start( );//启动线程 ti.start( ); } catch( IOException e ) { System.out.println( e ); } } } /*向管道输出数据的线程子类:发送0~20之间的5个随机整数*/ class ThreadOut extends Thread { private int[] data1=new int[5]; //管道输出流要发送的数据 private DataOutputStream dos;//声明数据输出流对象dos public ThreadOut( PipedOutputStream out) { //将数据输出流和管道输出流连接,以便向管道发送int类型的数据 dos = new DataOutputStream(out); } public void run( ) {//重写线程类的方法,线程启动后将执行该方法 try {//向管道中写入数据 for(int i=0;i /*从管道中读取数据的线程子类:接收管道中传过来的5个随机整数*/ class ThreadIn extends Thread { private int sum=0; //5个随机整数 private DataInputStream dis;//声明数据输入流对象dis public ThreadIn( PipedInputStream in ) { //将数据输入流和管道输入流连接,以便从管道读取int类型的数据 dis = new DataInputStream( in ); } public void run( ) {//重写线程类的方法,线程启动后将执行该方法 try {//接收输出管道发送的数据: int x; for(int i=0;i<5;i++) { x=dis.readInt(); sum+=x; System.out.println(\第\次接收数据:\ +x+\接收数据的和:\ try {sleep(1000);} catch(InterruptedException e) { } } dis.close( );//关闭流 } catch( IOException e ) { System.out.println( e ); } } } 8.使用RandomAccessFile类及其方法。 import java.io.*; public class Class1 { public static void main( String[ ] args ) { try { //以随机方式写入数据 RandomAccessFile out = new RandomAccessFile( \ out.writeInt(12345);//4 out.writeChar('A');//2 out.writeBoolean(true);//1 out.writeUTF(\程序设计\ //显示字符‘A' 和”程序设计“ out.seek(4); System.out.println(out.readChar()); out.skipBytes(1);//out.seek(7); System.out.println(out.readUTF()); System.out.println(out.getFilePointer()); System.out.println(out.length()); out.close(); System.in.read(); } catch( IOException e ) { System.out.println( e ); System.exit( -2 ); } } } 9.编写应用程序,使用RandomAccessFile类及其方法,把程序本身分两次显示在屏幕上。第一次直接显示,第二次给每一行添加的行号显示。 import java.io.*; public class Test { public static void main( String[ ] args ) throws IOException { RandomAccessFile randomfile = new RandomAccessFile(\ String s; while((s=randomfile.readLine())!=null) { System.out.println(s); } long filePointer=0,fileLength=randomfile.length(); randomfile.seek(0); //文件指针已到文件尾,将文件指针重设到文件开始位置 int i=1; while(filePointer 10.在程序所在的目录下有子目录b,目录b下有文本文件testb.txt。编写应用程序,创建文件对象: File file=new File(\ 通过文件对象file得到它的文件名、相对路径、绝对路径、父目录名。 import java.io.*; public class Class1 { public static void main( String args[ ] ) { File file=new File(\ System.out.println(\文件名:\ System.out.println(\相对路径:\ System.out.println(\绝对路径:\ System.out.println(\父目录名:\ } } 11.请编写一个名为Class1.java的Application,其功能为:测验文件Class1.java是否存在并输出其长度。 import java.io.*; public class Class1 { public static void main (String[] args) { File f1=new File(\ System.out.println(\ System.out.println(\ } } 12.编写应用程序:创建目录c:\\temp,并创建一个文件2.txt,向该文件中写入字符串\came.\共5次。 import java.io.*; public class Class1 { public static void main(String args[]) throws IOException { File file1=new File(\ file1.mkdir(); File file2=new File(file1,\ FileOutputStream out1=new FileOutputStream(file2); String s=\ byte[] b=s.getBytes(); for(int i=0;i<5;i++) { out1.write(b,0,b.length); } } } 13.过滤文件并显示。 import java.io.*; public class Class1 { public static void main( String[ ] args ) { try { File oDir = new File( \ String[ ] strList; //如果没有命令行参数就取当前目录下的所有文件列表 if( 0 == args.length ) strList = oDir.list( ); else strList = oDir.list( new DirFilter(args[0])); for( int i = 0; i < strList.length; i ++ ) System.out.println( strList[ i ] ); } catch( Exception e ) { System.out.println( e ); } } } class DirFilter implements FilenameFilter { String strPick; DirFilter( String pickname ) { this.strPick = pickname; } public boolean accept( File dir, String name ) { return name.endsWith( strPick ); } } 14.编写java应用程序,使用FileReader类对象读取程序本身(或其他目录下的文件)并显示在屏幕上。 import java.io.*;//读取程序本身,显示在屏幕上 public class Class1 { public static void main (String[] args) { try { FileReader fis=new FileReader(\ //FileReader fis=new FileReader(\ int n; while((n=fis.read())!=-1) System.out.print((char)n); fis.close(); } catch(IOException e) { System.out.println(e.toString()); } } } 15.编写应用程序,创建BufferedReader的对象,从某个文本文件中的字符输入数据流中读取一行字符(该文件与程序在同一目录下),跳过10个字节后将其显示出来。 import java.io.*; public class Class1 { public static void main(String args[]) throws IOException { BufferedReader b_reader=new BufferedReader(new FileReader(\ String str; } } b_reader.skip(10); str=b_reader.readLine(); System.out.println(str); 三、图形图像、常用组件和事件处理、布局 练习10(6) 掌握:(1)绘制字符串、字符、字节(2)字体、字型、字号的使用(3)颜色的设置 1. 请编写一个Applet,其功能为:在坐标(20,30)处以绿色显示“我喜欢绿色。 ” ,在坐标(20,60)处以蓝色显示“我也喜欢蓝色。” 。 @程序 import java.awt.*; import java.applet.*; public class Applet1 extends Applet { public void paint( Graphics g) { g.setColor(Color. green); g.drawString(\我喜欢绿色。\ g.setColor(Color.blue); g.drawString(\我也喜欢蓝色。\ } } 2. 请编写一个Applet,分别以红、绿、黄、粉、白、蓝等六种颜色,在同一行上显示六个数字 1、2、3、4、5、6。 @程序 import java.applet.*; import java.awt.*; public class Applet1 extends Applet { public void paint(Graphics g) { int j=0; Color color[ ]=new Color[6]; color[0]=Color.red; color[1]=Color.green; color[2]=Color.yellow; color[3]= Color.pink; color[4]=Color.white; color[5]=Color.blue; for(char ch='1'; ch <= '6'; ch++) { g.setColor( color[ch-'1']); g.drawString(\ } } } j+=20; 3. 请编写一个Applet,以不同的灰度值在一行上显示数字 0 - 9 。 @程序 import java.applet.*; import java.awt.*; public class Applet1 extends Applet { public void paint(Graphics g) { int j=0; int red=0, green=0,blue=0; for(char ch='0'; ch <= '9'; ch++) { g.setColor( new Color(red,green,blue)); g.drawString(\ j+=20; red+=85; green+=85; blue+=85; } } } 4. 编写Java小程序,将字符串“I like java!”重复显示5次,每次显示在1行上。要求显示字体为\字体,字体风格为斜体,第1行字符串的字体大小是15,后面的每一行的字体大小依次增加5,每行的间隔为30像素。 @程序 import java.awt.*; import java.applet.*; public class Applet1 extends Applet { Font f1; int size=15; int y=30; String str=\ public void paint(Graphics g) { for(int i=0;i<5;i++) { f1=new Font(\ g.setFont(f1); g.drawString(str,30,y); size+=5; y+=30; } } } 5. 请编写一个Applet,其功能为:在标签上输出字符串 \ is a Java program. \。要求标签以蓝色为背景,以红色为前景。 @程序 import java.awt.*; import java.applet.*; public class Applet1 extends Applet { Label p=new Label(\ is a Java program. \ public void init( ) { add(p); p.setBackground(Color.blue); p.setForeground(Color.red); } } 6. 请编写一个Applet,以不同颜色在一列上显示字符串 \每个字的颜色都不同!\。 @程序 import java.applet.*; import java.awt.*; public class Applet1 extends Applet { public void paint(Graphics g) { int j=0; char[ ] b={ '每', '个', '字', '的', '颜', '色', '都', '不', '同', '!'}; int red=188, green=220,blue=99; for(int i=0; i < b.length; i++) { g.setColor( new Color(red,green,blue)); g.drawString(\ j+=15; red+=35; green+=55; blue+=85; } } } 练习11(6) 掌握:(1)画直线(2)画长方形、画正方形(3)画圆、画椭圆、画扇形、画弧 1. 编写Java小程序,将小程序窗口的右上的1/4区域用红色画成实心的长方形;将小程序窗口的左下的1/4区域用蓝色画成实心的长方形。 @程序 import java.awt.*; import java.applet.*; public class Applet1 extends Appl et { public void paint(Graphics g) { int w=getSize().width; int h=getSize().height; g.setColor(Color.red); g.fillRect(w/2,0,w/2,h/2); g.setColor(Color.blue); g.fillRect(0,h/2,w/2,h/2); } } 2. 请编写一个Applet,其功能为:在Applet窗口中用绿色画一个左上角坐标为 (10,10)、高为90、宽为110的矩形框;然后画内切于该矩形的红色椭圆。 @程序 import java.awt.*; import java.applet.*; public class Applet1 extends Applet { public void paint( Graphics g ) { g.setColor( Color.green); g.drawRect(10,10,110,90); g.setColor( Color.red); g.drawOval(10,10,110,90); } } 3. 请编写一个Applet,其功能为:在Applet窗口中先画一条从坐标(100,100)到坐标(200,100)的绿线;然后以该线中心点为圆心,画半径为50,边框为红色的圆。 @程序 import java.awt.*; import java.applet.*; public class Applet1 extends Applet { public void paint( Graphics g ) { g.setColor(Color.green); g.drawLine(100,100,200,100); g.setColor(Color.red); g.drawOval(50,50,100,100); } } 4. 编写Applet,功能为:在Applet窗口中以坐标(100,20)为左上角,填充边长为80、厚度为10的红色正方形框;再以坐标(10,20)为左上角,画边长为80的绿色正方形,然后将其擦去;最后在窗口的状态栏中显示字符串“画的是正方形。”。 @程序 import java.awt.*; import java.applet.*; public class Applet1 extends Applet { public void paint(Graphics g) { g.setColor(Color.red); g.fillRect(100,20,80,80); g.setColor(getBackground( )); g.fillRect(110,30,60,60); g.setColor(Color.green); g.drawRect(10,20,80,80); showStatus(\画的是正方形\ for(int i=0; i < Integer.MAX_VALUE -1 ; i++); g.setColor(getBackground( )); g.drawRect(10,20,80,80); } } 5. 请编写一个Applet,其功能为:在窗口中画一个任意的红边的六边形,然后将其擦去。 @程序 import java.awt.*; import java.applet.*; public class Applet1 extends Applet { int[ ] x={40,80,100,180,200,70}; int[ ] y={40,10,30,70,180,90}; public void paint(Graphics g) { g.setColor(Color.red); g.drawPolygon(x,y,6); for(int i=0;i<123456789;i++); g.setColor(getBackground( )); g.fillRect(0,0,getSize().width,getSize().height); } } 6. 请编写一个实现如下功能的Applet:在窗口中从60°开始逆时针画一个30°的绿色扇形,并令其内切于左上角坐标为 (100,60)、长为110、宽为90的矩形区域。 @程序 import java.awt.*; import java.applet.*; public class Applet1 extends Applet { public void paint(Graphics g) { g.setColor(Color.green); g.fillArc(100,60,90,110,60,30); } } 练习12(3) 掌握:标签、文本框的编程。 1. 请编写一个Applet,其功能为:在Applet窗口上摆放两个标签。构造第一个标签时,令其上面的文本信息为“我将参加Java程序设计考试。”,将第二个标签构造为空标签。程序将第一个标签的信息复制到第二个标签上,并增加信息“希望自己考取好成绩。”。要求第一个标签以红色为背景,绿色为前景;第二个标签以绿色为背景,蓝色为前景。 @程序 import java.applet.Applet; import java.awt.*; public class Applet1 extends Applet { Label p1=new Label(\我将参加Java程序设计考试。\ Label p2=new Label(\ \ public void init( ) { add(p1); add(p2); p2.setText(p1.getText( )+ \希望自己考取好成绩。\ p1.setBackground(Color. red); p1.setForeground(Color.green); p2.setBackground(Color. green); p2.setForeground(Color.blue); } } 2. 请编写一个Applet实现如下功能:定义一个用于给出提示信息的标签和两个文本框,其中,一个文本框用于获取用户给出的一个整数,求该数的平方后将计算结果置在另一个文本框中输出。 @程序 import java.applet.*; import java.awt.*; import java.awt.event.*; public class Applet1 extends Applet implements ActionListener { Label p; TextField in,out; int x; String str=\ public void init( ) { p=new Label(\请输入一个整数: \ in=new TextField(18); out=new TextField(28); add(p); add(in); add(out); in.addActionListener(this); } public void actionPerformed(ActionEvent evt) { x=Integer.parseInt(in.getText()); repaint( ); } public void paint(Graphics g) { str=x+\的平方为: \ out.setText(str); } } 3. 请编写一个Applet实现如下功能:定义三个文本框。其中,第一个文本框上面的文本信息为“请输入口令:”;第二个文本框为口令输入域;第三个文本框上的信息由程序设置:若口令(假设口令为字符串‖MyKey‖)正确,则设置为“通过!”,否则设置为“口令错!”;。 @程序 import java.awt.*; import java.applet.*; import java.awt.event.*; public class Applet1 extends Applet implements ActionListener { TextField p; TextField in; TextField out; String s=\ public void init( ) { p=new TextField (\请输入口令: \ in=new TextField(18); out=new TextField(38); add(p); add(in); add(out); in.addActionListener(this); } public void actionPerformed(ActionEvent evt) { s=in.getText(); if(s.equals(\通过!\ else out.setText(\口令错!\ } } 练习13(8) 掌握:按钮、单选按钮、复选按钮、列表的编程。 1. 编写Applet, 其中包含两个按钮b1、b2,初始时b1的前景为兰色,b2的前景为红色,它们的标签分别为‖兰按钮‖、‖红按钮‖。当点击b1时,通过paint()方法在坐标(100,100)处画一个兰色的椭圆框,椭圆的长半轴为30,短半轴为20;点击b2时,在坐标(100,100)处,画一个红色的圆框,圆的半径为50。无论那个按钮被点击,都将该按钮上的标记改为“已按过”,并使该按钮变灰。 @程序 import java.awt.*; import java .awt .event .*; import java.applet.*; public class Applet1 extends Applet implements ActionListener { int i; Button b1,b2; public void init() { b1=new Button(\兰按钮\ b2=new Button(\红按钮\ add(b1); b1.setForeground(Color.blue); add(b2); b2.setForeground(Color.red); b1.addActionListener(this); b2.addActionListener(this); } public void paint(Graphics g) { if(i==1) { g.setColor(Color.blue); g.drawOval(100,100,60,40); b1.setLabel(\已按过\ b1.setForeground(Color.gray); } if(i==2) { g.setColor(Color.red); g.drawOval(100,100,100,100); b2.setLabel(\已按过\ b2.setForeground(Color.gray); } } public void actionPerformed(ActionEvent e) { if(e.getSource()==b1) { i=1; } if(e.getSource()==b2) { i=2; } repaint(); } } 2. 编写Applet, 其中包含两个按钮,它们的标签分别为“画正方形”和“画圆”,点击按钮“画正方形”时,通过paint()方法以坐标(10,10)为左上角画一个边长为60的兰色正方形框;点击按钮“画圆”时,画一个半径为50的红色填充圆,该圆内切于左上角坐标为(100,100)的正方形。如果那个按钮被点击,就使该按钮变得不可见。 @程序 import java.awt.*; import java .awt .event .*; import java.applet.*; public class Applet1 extends Applet implements ActionListener { int i; Button btn1, btn2; public void init() { btn1=new Button(\画正方形\ btn2=new Button(\画圆\ add(btn1); add(btn2); btn1.addActionListener(this); btn2.addActionListener(this); } public void paint(Graphics g) { if(i==1) { g.setColor(Color. blue); g.drawRect(10,10,60,60); btn1.setVisible(false); } if(i==2) { g.setColor(Color. red); g.fillOval(100,100,100,100); btn2.setVisible(false); } } public void actionPerformed(ActionEvent e) { if(e.getSource()==btn1) { i=1; } if(e.getSource()==btn2) { i=2; } repaint(); } } 3. 编写Applet, 其中包含两个按钮:按钮上的标签分别为“确定”和“取消”。当点击“确定” 按 钮时,通过paint()方法在坐标(20,80)处,用绿色显示点击“确定”按钮的次数;当点击“取消” 按钮时,通过paint()方法在坐标(20,100)处,用红色显示点击“取消”按钮的次数(要求“确定”和“取消”的次数同时显示在Applet中)。 @程序 import java.awt.*; import java .awt .event .*; import java.applet.*; public class Applet1 extends Applet implements ActionListener { int j=0,k=0; Button btn1, btn2; public void init() { btn1=new Button(\确定\ btn2=new Button(\取消\ add(btn1); add(btn2); btn1.addActionListener(this); btn2.addActionListener(this); } public void paint(Graphics g) { g.setColor(Color.green); g.drawString(\你点击了\\\确定\\\按钮 \次\ g.setColor(Color.red); g.drawString(\你点击了\\\取消\\\按钮 \次\ } public void actionPerformed(ActionEvent e) { if(e.getSource()==btn1) j++; if(e.getSource()==btn2) k++; repaint( ); } } 4. 编写Applet, 其中包含两个按钮,初始时两个按钮的前景均为绿色。当点击一个按钮时,通过paint( )方法在坐标(10,50)处显示一幅图象,图象名称为a.gif,显示的高、宽分别为50、50;图象与嵌入该小应用程序的网页在同一目录(程序中用到的图片由学生在计算机中找)。当点击另一个按钮时,在窗口的状态栏中输出字符串“好漂亮!”。同时要求当反复点击按钮时,就令被点击按钮的前景变为红色,而使另一个按钮的前景恢复为绿色。 @程序 import java.awt.*; import java .awt .event .*; import java.applet.*; public class Applet1 extends Applet implements ActionListener { int i; Image pic; Button btn1,btn2; public void init() { btn1=new Button(\ btn2=new Button(\ add(btn1); btn1.setForeground(Color.green); add(btn2); btn2.setForeground(Color.green); btn1.addActionListener(this); btn2.addActionListener(this); pic=getImage(getDocumentBase(),\ } public void paint(Graphics g) { if(i==1) g.drawImage(pic,10,50,50,50,this); if(i==2) showStatus(\好漂亮!\ } public void actionPerformed(ActionEvent e) { if(e.getSource()==btn1) { i=1; btn1.setForeground(Color.red); btn2.setForeground(Color.green); } if(e.getSource()==btn2) { i=2; btn2.setForeground(Color.red); btn1.setForeground(Color.green); } repaint(); } } 5. 编写Applet, 显示一幅后缀名为jpg的图片,图片显示的左上角坐标为(20,40),宽、高为80、80像素(图片在计算机中查找)。小程序中还包含两个按钮,按钮名称分别为\放大图片\和\缩小图片\。每次按下\放大图片\按钮时,把图片显示的宽、高分别增加10像素;每次按下\缩小图片\按钮时,把图片显示的宽、高分别减小10像素。 @程序 import java.awt.*; import java .awt .event .*; import java.applet.*; public class Applet1 extends Applet implements ActionListener { Image pic; Button btn1,btn2; int w=80,h=80; public void init() { pic=getImage(getDocumentBase(),\ btn1=new Button(\放大图片\ btn2=new Button(\缩小图片\ add(btn1); add(btn2); btn1.addActionListener(this); btn2.addActionListener(this); } public void paint(Graphics g) { g.drawImage(pic,20,40,w,h,this); } public void actionPerformed(ActionEvent e) { if(e.getSource()==btn1) { w+=10; h+=10; } if(e.getSource()==btn2) { w-=10; h-=10; } repaint(); } } 6. 请编写一个Applet,其功能为:在其窗口中摆放三个单选按钮,令它们的标签分别为“选项1”、“选项2”、“选项3”, 初始时,所有按钮均可见;以后,如果某个单选按钮被选中了,就显示它被选中的信息(如,若点击了第二个单选按钮,则显示“你选择了‖选项2‖”), 并使该单选按钮自身不可见,而使其它单选按钮变为可见的。 @程序 import java.awt.*; import java .awt .event .*; import java.applet.*; public class Applet1 extends Applet implements ItemListener { CheckboxGroup optGroup; Checkbox opt1,opt2,opt3; String s=\ boolean b=false; public void init() { optGroup=new CheckboxGroup( ); opt1=new Checkbox(\选项1\ add(opt1); opt1.addItemListener(this); opt2=new Checkbox(\选项2\ add(opt2); opt2.addItemListener(this); opt3=new Checkbox(\选项3\ add(opt3); opt3.addItemListener(this); } public void paint(Graphics g) { if(b) g.drawString(\你选择了\ } public void itemStateChanged(ItemEvent e) { b=true; if(e.getSource()==opt1) { opt1.setVisible(false); opt2.setVisible(true); opt3.setVisible(true); s=opt1.getLabel( ); } if(e.getSource()==opt2) { opt1.setVisible(true); opt2.setVisible(false); opt3.setVisible(true); s=opt2.getLabel( ); } if(e.getSource()==opt3) { opt1.setVisible(true); opt2.setVisible(true); opt3.setVisible(false); s=opt3.getLabel( ); } repaint( ); } } 7. 请编写一个Applet,在其窗口中摆放两复选按钮框,显示它们被选中(那个被选中、或两个均被选中、或两个均未选中)的信息。 @程序 import java.awt.*; import java .awt .event .*; import java.applet.*; public class Applet1 extends Applet implements ItemListener { private TextField t; private Checkbox opt1,opt2; public void init() { t=new TextField(\ \ add(t); opt1=new Checkbox(\选项1\ add(opt1); opt1.addItemListener(this); opt2=new Checkbox(\选项2\ add(opt2); opt2.addItemListener(this); } public void itemStateChanged(ItemEvent e) { String s=\ if(opt1.getState( )) s=\选择了选项1\ if(opt2.getState( )) s=s+\选择了选项2\ t.setText(s); } } 8. 使用List列表组件,选择画何种几何图形(黄色矩形、绿色圆、红色椭圆、白色扇形、兰色直线之一),并通知程序实现之。 @程序 import java.applet.Applet; import java.awt.*; import java.awt.event.*; public class Applet1 extends Applet implements ActionListener , ItemListener { List myList; String itemNames[] = { \黄色矩形\红色圆\绿色椭圆\白色扇形\兰色直线\ //项目名称 Color colors[] = { Color.yellow , Color.red, Color.green, Color.white, Color.blue }; //颜色对象数组 int j; boolean b=false; public void init() { myList = new List( 6, false ); for ( int i = 0; i < itemNames.length; i++ ) myList.add( itemNames[ i ] ); add( myList ); myList.addActionListener( this ); myList.addItemListener( this ); } public void actionPerformed( ActionEvent e ) { } public void itemStateChanged( ItemEvent e ) { b=true; showStatus( myList.getSelectedItem() + \ myList.getSelectedIndex() );
正在阅读:
Java程序练习100题09-28
南京理工大学机电系统综合实验报告01-18
2009年--2014年湖南省学考真题汇编 - 图文05-23
八年级政治上册 第一课《爱在屋檐下》教案 人教新课标版04-16
离别的心情作文400字06-28
班级文化建设策略及机制的研究开题报告05-19
BT项目合同书范本06-09
广州中小企业以小搏大启示录管理07-22
人工种植铁皮石斛技术和病虫害防治07-20
一朵粉色的月季花作文500字06-28
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 练习
- 程序
- Java
- 100
- 数据结构C语言习题及解答
- 现代园艺设施教案第一课
- 上海市高级口译考试第二阶段考试题库 -
- 景泰县2012年普通高中招生工作实施方案(暂行稿)
- 科研成果、学术论文及新技术、新业务奖励规定
- 2016-2021年中国冷轧带钢市场前景展望分析及竞争格局预测研发报告
- 一砖一瓦讲述原汁原味的关中历史(秋林夜雨 作)
- 中国政法大学2009年自主选拔生入围学生名单 - 图文
- 台帐三施工组织与设计
- C语言课程设计贪吃蛇源代码
- 天然气管道保护安全责任书
- 七年级美术上册复习资料2014版
- 白云区国家税务局责令限期改正通知书送达公告 - 图文
- 小学美术第11册教案
- 易利项目管理软件使用说明(初学者用) - 图文
- 2013年注册物业管理师《物业管理实务》真题及参考答案
- 在线测试
- 道路桥梁与渡河工程专业毕业实习报告范文
- 洗煤厂建设项目可行性研究报告
- 语言学概论重点