admin 管理员组文章数量: 887031
2023年12月19日发(作者:checkbox勾选颜色改变)
上机练习题
(共包括四部分、16个练习、共96个练习题,请使用“视图”中的“文档结构图”查看)
一、java语言基础和面向对象(教材内容的第1、2、3章)
练习1(4)
掌握:各种数据类型变量的定义和访问,各种数据类型常量的使用,数据类型转换。
1. 编写Applet,其功能为:取两个小于1000的正随机数,若两个数均小于10,先将它们都放大50倍,否则不改变这两个数。最后,求这两个数的和并将结果输出。要求这些功能在主类的方法init( )
中实现,并使输出结果仅保留小数点后4位(不需四捨五入)。
@程序
import .*;
import .*;
public class Applet1 extends Applet
{
public void init( )
{
Label out1=new Label(" ");
Label out2=new Label(" ");
double x,y;
add(out1);
add(out2);
x=( )*1000;
y=( )*1000;
if(x<10&y<10) { x*=50; y*=50; }
t(""+x+"+"+y+" 约等于 ");
t(""+(int)((x+y)*10000)/10000.0);
}
}
2. 请编写一个Applet,其功能为:取一个小于10000的正随机整数,并输出该数的平方根。要求这些功能在主类的方法paint( ) 中实现,并使输出结果在四捨五入后保留小数点后4位。
@程序
import .*;
import .*;
public class Applet1 extends Applet
{
public void paint(Graphics g)
{
word文档 可自由复制编辑
int k;
k=(int)(( )*1000);
ring(""+k+" 的平方根约等于 "+
(int)(((k)+0.00005)*10000)/10000.0,20,20);
}
}
3. 编写一个Applet,其功能为:取一个50~200之间的正随机整数,如果该数为奇数则求它的平方根并转换成float型数后再输出;如果该数为偶数则求它的平方并输出。
@程序
import .*;
import .*;
public class Applet1 extends Applet
{
public void paint(Graphics g)
{
int k;
k=50+(int)(( )*150);
if(k%2!=0)
ring(""+k+" 的平方根约等于 "+(float)(k),20,20);
else
ring(""+k+" 的平方等于 "+k*k,20,20);
}
}
4. 请编写一个Application,其功能为:取一个小于800的正随机整数,将其以如下形式输出:
所取随机数为:***
它的百位数字为:*
它的十位数字为:*
它的个位数字为:*
@程序
//import .*;
public class Class1
{
public static void main (String[] args)
{
int x=(int)(( )*800);
n("所取随机数为:"+x);
n("它的百位数字为:"+x/100);
n("它的十位数字为:"+x%100/10);
n("它的个位数字为:"+x%10);
//try{ ( ); }catch(IOException e){ }
}
}
word文档 可自由复制编辑
练习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 .*;
import .*;
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[];
float[ ] y=new float[];
x=square(a);
y=square(b);
for(int i=0; i<;i++)
ring(""+x[i],20+i*40,20);
for(int i=0; i<;i++)
ring(""+y[i],20,40+i*20);
}
float[ ] square(double x[ ])
{
float[ ] y=new float[];
for(int i=0; i< ; i++)
y[i]=(float)(x[i]*x[i]);
return y;
}
}
word文档 可自由复制编辑
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 .*;
public class Class1
{
}
3. 请编写一个Application实现如下功能:在主类中定义方法f1(int n) 和方法f2(int n),它们的功能均为求 n!,方法f1( ) 用循环实现,方法f2( )用递归实现 。在主方法main( ) 中,以4为实在参数分别调用方法f1( ) 和方法f2( ),并输出调用结果。
@程序
//import .*;
public class Class1
{
public static void main (String[] args)
{
n("用循环实现求 n! 的结果(n=4):"+f1(4));
n("用递归实现求 n! 的结果(n=4):"+f2(4));
//try{ char c=(char)( );}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<; i++)
y+=(x[i]);
return (float)y;
n("数组a各元素的平方根之和为:"+sqrt_sum(a));
n("数组b各元素的平方根之和为:"+sqrt_sum(b));
//try{ char c=(char)( );}catch(IOException e){ }
word文档 可自由复制编辑
}
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( >= 3)
{
x=f(args[0]).floatValue( );
y=f(args[1]).floatValue( );
op=args[2].charAt(0);
switch(op)
{
case '+': n(x+"+"+y+"="+(x+y)); break;
case '-': n(x+"-"+y+"="+(x-y)); break;
case '*': n(x+"*"+y+"="+(x*y)); break;
case '/': n(x+"/"+y+"="+(x/y)); break;
default : n("非法运算符!");
}
}
else { n("命令行参数错!"); (-1); }
}
}
5. 编写Application,主类中包含以下两个自定义方法: void printA( int[ ] array )和int[]
word文档 可自由复制编辑
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( > 0)
{
n=nt(args[0]);
int[ ] a=new int[n];
a=myArray(n);
printA(a);
}
else { n("缺命令行参数!"); (-1); }
}
static void printA(int[ ] x)
{
for(int i=0; i< ; i++)
(x[i]+" ");
n( );
return;
}
static int[ ] myArray(int k)
{
int x[ ]=new int[k];
for(int i=0; i< k; i++)
x[i]=50+(int)(( )*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 .*;
word文档 可自由复制编辑
import .*;
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)
{
ring("数组a 的最小元素的值为: "+ arrayMin(a),20,20);
ring("数组b 的最小元素的值为: "+ arrayMin(b),20,40);
}
int arrayMin(int x[ ])
{
int y=x[0];
for(int i=1; i< ; i++) if(y>x[i]) y=x[i];
return y;
}
double arrayMin(double x[ ])
{
double y=x[0];
for(int i=1; i< ; 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( >= 3)
{
int n;
float f;
double d;
n=nt(args[0]);
f=f(args[1]).floatValue( );
d=f(args[2]).doubleValue( );
n(n+"的平方根为: "+mySqrt(n));
n(f+"的平方根为: "+mySqrt(f));
n(d+"的平方根为: "+mySqrt(d));
}
else { n("缺命令行参数!"); (-1); }
word文档 可自由复制编辑
}
static int mySqrt(int x)
{ return (int)(x); }
static float mySqrt(float x)
{ return (float)(x); }
static double mySqrt(double x)
{ return (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 .*;
import .*;
public class Applet1 extends Applet
{
public void paint(Graphics g)
{
ring("12345+67 = "+ addM(12345,67),20,40);
ring("89.6+6.9e-8 = "+ addM(89.6f,6.9e-8),20,60);
ring("0.987654321+32.1 = "+ addM(0.987654321,32.1),20,80);
}
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的值。
word文档 可自由复制编辑
@程序
import .*;
import .*;
public class Applet1 extends Applet
{
int n=123;
B x=new B(68.963f,true);
public void paint(Graphics g)
{
((byte)66);
ring("f="+x.f+" k="+( )+" b="+x.b+" n="+n,10,20);
}
}
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( );
n("d="+b.d+" f="+b.f);
n("d的整数部分="+_d(b.d)+" f的整数部分="+_f(b.f));
}
}
class A
{
double d=8.8;
int int_d(double dd){ return (int)dd; }
}
word文档 可自由复制编辑
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;
n("main( ) 中的 i="+i);
m1( );
m2( );
}
static void m1( )
{
int i=789;
n("m1( ) 中的 i="+i);
}
static void m2( )
{
n("类变量 i="+i);
i+=6;
n("加 6后的类变量 i="+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,使返回结word文档 可自由复制编辑
果为另一个A类的对象(即不破坏实在参数的值)。请在paint()方法中先输出x1、x2的属性值,然后再分别以x1、x2为实在参数调用方法b( ),并输出调用结果,最后再次输出x1、x2的属性值。
@程序
import .*;
import .*;
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,' ');
ring("对象x1的属性值: i=" + x 1.i+" ch="+ x ,20,20);
ring("对象x1的属性值: i=" + x 2.i+" ch="+ x ,20,40);
a1=b(x1); a2=b(x2);
ring("以x1为实参调用方法b( ) 生成的新的A类对象的属性值: i="
+a1.i+" ch="+,20,60);
ring("以x2为实参调用方法b( ) 生成的新的A类对象的属性值: i="
+a2.i+" ch="+,20,80);
ring("调用后,对象x1的属性值: i=" + x 1.i+" ch="+ x ,20,100);
ring("调用后,对象x1的属性值: i=" + x 2.i+" ch="+ x ,20,120);
}
A b(A y)
{
A a=new A((short)0,' ');
a.i=(short)(y.i+3);
=(char)(+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 .*;
import .*;
public class Applet1 extends Applet
word文档 可自由复制编辑
{
B b=new B( );
public void paint(Graphics g)
{
ll( g);
}
}
class A
{
char x=65;
void myPrint(Graphics g)
{ ring("x="+x,20,20); }
}
class B extends A
{
int y=16;
String s="java program!";
void myPrint(Graphics g)
{ ring("y="+y+" s="+s,20,40); }
void printAll( Graphics g)
{ t(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( ); t(1.2f ); }
}
class A
{
float rear(float r)
{ return (float)*r*r; }
}
class B extends A
{
float rear(float r)
{ return 4*(float)*r*r; }
void myPrint(float r)
{
n("半径为 "+r+"的圆的面积="+(r)
+" 同半径的球的表面积="+rear(r));
word文档 可自由复制编辑
}
}
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 .*;
import .*;
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的值。
word文档 可自由复制编辑
B b=new B("这是父类的x.",68 );
public void paint(Graphics g)
{ t(g); }
A(String x1){ x=x1; }
int x;
B(String x1,int x2){ super(x1); x=x2;
void myPrint(Graphics g)
{ ring("父类A中x的值="+super.x+" 子类B中x的值="+x,20,30); }
}
@程序
import .*;
import .*;
public class Applet1 extends Applet
{
double d=32.6;
B b=new B(50,7.2f,'h',true );
public void paint(Graphics g)
{
ring("i="+b.i+" f="+b.f+" ch="++" b="+b.b+" d="+d,10,30);
}
}
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 .*;
import .*;
public class Applet1 extends Applet implements A
{
public void paint(Graphics g)
{
ring("调用method1(2)的结果: "+method1(2),20,20);
ring("调用method2(2,8)的结果: "+method2(2,8),20,40);
word文档 可自由复制编辑
}
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的球的体积(公式为:4r33);方法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=f(args[0]).floatValue( );
n("半径为"+r+"的球的体积="+(r));
n("半径为"+r+"的圆的面积="+ (r));
}
}
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);
}
word文档 可自由复制编辑
public float area(double r)
{
return (float)(myPI*r*r);
}
}
3. 定义类A,在其中定义一个final变量myPI,其类型为float,值为3.1416;类A中还定义一个final方法 m1(float r),该方法返回值类型为float,功能是求半径为r的圆的周长(公式为:2r)。再定义类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)
{
n("半径为"+r+"的圆的周长="+m1(r));
n("半径为"+r+"的圆的面积="+myPI*r*r);
}
}
4.编写应用程序,功能为:从命令行传入一个包含十个字符的字符串,把该字符串与程序中给定的字符串"bacdbcabca"依次比较,统计两个串中对应字符相等的数目。然后输出命令行输入的字符串,并把两个串中对应字符不相等的字符替换为'@'后生成的新串输出,最后输出两个串中相等字符的数目。
@程序
public class Class1
{
public static void main(String args[]) throws IOException
{
if(args[0].length()<10) ("Enter a string:include 10 chars");
else
word文档 可自由复制编辑
}
}
{
}
String str=new String("bacdbcabca");
int n=0;
("The Standard answer:");
for (int x=0;x<();x++)
(" "+(x));
n();
("The Student answer:");
for (int x=0;x<();x++)
{
}
n( );
n("The correct answers:"+n);
if (args[0].charAt(x)==(x))
{ n++; (" "+args[0].charAt(x)); }
(" "+"@"); else
5. 请编写一个Application实现如下功能:接受命令行中给出的一个字母串,先将该串原样输出,然后判断该串的第一个字母是否为大写,若是大写则统计该串中大写字母的个数,并将所有大写字母输出;否则输出信息串”第一个字母不是大写字母!”。
@程序
public class Class1
{
public static void main(String args[])
{
int count=0;
if(!=0)
{
n(args[0]);
if((int)args[0].charAt(0)>=65 && (int)args[0].charAt(0)<=90)
{
for(int i=0;i if((int)args[0].charAt(i)>=65 && (int)args[0].charAt(i)<=90) { (args[0].charAt(i)); Count++; } n( ); n(“共有 ”+count+” 个大写字母。”); } else n("第一个字母不是大写字母!"); } word文档 可自由复制编辑 } } else n("请给出命令行参数!"); 练习7(5) 掌握:命令行传参数。 1.请编写一个实现如下功能的Application:比较命令行中给出的两个整数是否相等,并根据比较结果显示"相等"或"不相等"。 public class Class1 { public static void main (String[] args) { int x,y; String str=" "; if( < 2) { n("请在命令行输入两个参数"); (-1); } x=nt(args[0]); y=nt(args[1]); if (x==y) str="命令行输入的两个参数相等"; else str="命令行输入的两个参数不相等"; n( str ); } } 2.编写一个Application程序,比较命令行中给出的两个字符串是否相等,并输出比较的结果。 import .*; public class Class1 { public static void main (String[] args) { if( < 2 ) { n( "Usage: string1 string2"); (-1); } if(args[0].equals(args[1])) n( args[0]+" 和 "+args[1]+" 相等 "); else n( args[0]+" 和 "+args[1]+" 不等 "); } } word文档 可自由复制编辑 3.从命令行传入3个整数,求3个整数的和、积、最大值、最小值。 public class Class1 { public static void main (String[] args) { int n=; if(n<3) n("请输入三个整数!"); else { int a,b,c; a=nt(args[0]); b=nt(args[1]); c=nt(args[2]); n("和:"+(a+b+c)); n("积:"+(a*b*c)); n("最大值:"+(c,(a,b))); n("最小值:"+(c,(a,b))); } } } 4.请编写一个Application实现如下功能:通过命令行中给出的float型参数x, 和int型参数y(如果参数少于两个,给出提示后退出系统),调用Math类中的方法求x的y次方并输出。 import .*; public class Class1 { public static void main (String[] args) { int x,y; String str=" "; if( < 2) { n("Usage:number1 number2"); (-1); } x=f(args[0]).floatValue( ); y=nt(args[1]); str=str+x+" 的 "+y+" 次方 = "+((x,y)); n( str ); } } 5.编写Application,求从命令行传入任意多个整数的最大值、最小值、平均值。 public class Class1 { public static void main (String[] args) { int n=; if(n==0) word文档 可自由复制编辑 n("Please input int numbers!"); else { int x[]=new int[n]; for(int i=0;i<;i++) x[i]=nt(args[i]); n("max="+ArrayMax(x)); n("min="+ArrayMin(x)); n("ave="+ArrayAve(x)); } } static int ArrayMax( int array[] ) { int max = array[0]; for( int i =1; i < ; i++) { if ( array[i] > max ) { max = array[i]; } } return max; } static int ArrayMin( int array[] ) { int min = array[0]; for( int i =1; i < ; i++) if ( array[i] < min ) min = array[i]; return min; } static int ArrayAve( int array[] ) { int sum=0; for( int i =0; i < ; i++) sum+=array[i]; return sum/; } } 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=" "; word文档 可自由复制编辑 } } x =nt(args[0]); y =nt(args[1]); op=args[2].charAt(0); switch(op) { case '+' : str=str+x+" + "+y+" = "+(x+y); break; case '-' : str=str+x+" - "+y+" = "+(x-y); break; case '*' : str=str+x+" * "+y+" = "+(x*y); break; case '/' : str=str+x+" / "+y+" = "+(x/y); break; default : n("不能识别的运算符 "+op); (0); } n(str); 二、异常、多线程和输入输出处理(教材内容的第4、5、6章) 练习7 异常处理(1) 了解java中异常的处理:除运行时异常外,其他异常必须要捕捉或声明抛弃。例如,多线程编程或输入输出编程中异常的处理。 1.通过下面的程序了解异常的处理、以及异常发生时程序的执行情况。 import .*; public class Class1 { public static void main(String args[]) { int a=5; int b=0; n(a/b); try { n("a="+a); n(a/b); n("a*a="+a*a); } catch(ArithmeticException e) { n("除数为0,这是不行的!"); } finally { n("a*a*a="+a*a*a); } n("异常已发生,但不影响程序的执行!"); } word文档 可自由复制编辑 } 练习8 多线程(5) 掌握:java中实现多线程的两种方法,能编写多线程的简单程序。多线程的相关知识还可与管道流结合、或应用他们编写小程序界面的简单动画等(参考练习15)。 1.请编写一个类,类名为subThread ,它是Thread 类的子类。该类中定义了含一个字符串参数的构造函数和run( )方法,方法先在命令行显示线程的名称,然后随机休眠小于1秒的时间,最后显示线程结束信息: "finished"+线程名。编写Application,在其中创建subThread类的三个对象t1、t2、t3,它们的名称分别为"First"、" Second"、" Third",并启动这三个线程。 public class Class1 { public static void main( String[ ] args ) { Thread t1 = new subThread( "First" ); Thread t2 = new subThread( "Second" ); Thread t3 = new subThread( "Third" ); ( );( );( ); } } class subThread extends Thread { public subThread( String str ) { super( str ); } public void run( ) { n( " " + getName( ) ); try { sleep( ( int )( ( ) * 1000 ) ); } catch( InterruptedException e ) { } n( "Finished!" + getName( ) ); } } 2.请编写一个类,类名为subThread ,它是Thread 类的子类。该类中定义了含一个字符串参数的构造函数和run( )方法,方法中有一个for循环,循环一共进行5次,循环体中先在命令行显示该线程循环到了第几次,然后随机休眠小于1秒的时间,循环结束后显示线程结束信息: 线程名+"finished"。编写Application,在其中创建subThread类的三个对象t1、t2、t3,它们的名称分别为"First"、" Second"、" Third",并启动这三个线程。 public class Class1 { public static void main( String[ ] args ) { Thread t1 = new subThread( "First" ); Thread t2 = new subThread( "Second" ); Thread t3 = new subThread( "Third" ); ( ); ( ); ( ); } } word文档 可自由复制编辑 class subThread extends Thread { public subThread( String str ) { super( str ); } public void run( ) { for(int i=1;i<=5;i++) { n( getName( )+", "+i+" times" ); try { sleep( ( int )( ( ) * 1000 ) ); } catch( InterruptedException e ) { } } n( "Finished!" + getName( ) ); } } 3.请编写一个类,类名为MulThread ,类中定义了含一个字符串参数的构造函数,并实现了Runnable接口,接口中的run( )方法如下实现:方法中先在命令行显示该线程信息,然后随机休眠小于1秒的时间,最后后显示线程结束信息: "finished"+线程名。编写Application,在其中通过Runnable创建MulThread类的三个线程对象t1、t2、t3,并启动这三个线程。 public class Class1 { public static void main( String[ ] args ) { Runnable r1 =new MulThread( "First" ); Runnable r2 =new MulThread( "Second" ); Runnable r3 =new MulThread( "Third" ); Thread t1 = new Thread( r1 ); Thread t2 = new Thread( r2 ); Thread t3 = new Thread( r3 ); ( );( );( ); } } class MulThread implements Runnable { String s; public MulThread(String str) { s=str;} public void run( ) { n(s); try { ( ( int ) ( ( ) * 1000 ) ); } catch( InterruptedException e ){ } n( "Finished! " + s ); word文档 可自由复制编辑 } } 4.编写小程序实现一个数字时钟。 import .*; import .*; import ar; public class Applet1 extends Applet implements Runnable { Thread timeThread; Font wordFont; int year,month,day; int weekday; int hour,minute,second; public void init() { kground(); wordFont=new Font("楷体_gb2312",,50); } public void start() { if(timeThread==null) { timeThread=new Thread(this); (); } } public void stop() { if(timeThread!=null) { (); timeThread=null; } } public void run() { while(true) { Calendar time=tance();//创建类的实例 year=(); month=(); day=(_OF_MONTH ); weekday=(_OF_WEEK); hour=(); minute=(); second=(); repaint (); word文档 可自由复制编辑 try { ( 300); } catch (InterruptedException e) { } } } public void paint (Graphics g) { String s1=year+"年"+month+"月"+day+"日"; String s2="星期"+weekday; String s3=hour+":"+minute+":"+second; t (wordFont); or (); ring (s1, 20, 50); ring (s2, 20, 120); ring (s3, 20, 200); } } 5.编写小程序实现Runnable接口,通过多线程实现在小程序窗口中不断的显示自然数:从1直到100。 import .*; import .*; public class Javaapplet extends Applet implements Runnable { int counter=0; Thread t; public void init() { t=new Thread(this); (); } public void run() { while( counter<=100 ) { counter++; try { (1000); } catch ( InterruptedException e ) { } repaint(); } } public void paint( Graphics g ) { setBackground(); or(); t(new Font("Times New Roman",,35)); ring( f(counter),60,60 ); word文档 可自由复制编辑 } } 练习9 输入输出(15) 掌握:java的输入输出处理 1.编写应用程序,使用()方法读取用户从键盘输入的字节数据,回车后,把从键盘输入的数据存放到数组buffer中,并将用户输入的数据通过()显示在屏幕上。 import .*; public class Class1 { public static void main(String args[]) { byte buffer[]=new byte[128]; int n; try { n=(buffer); //把键盘输入的数据读到数组buffer中,返回实际读取的字节数 for(int i=0;i ((char)buffer[i]); } catch(IOException e) { (e); } } } 2.编写应用程序,使用()方法读取用户从键盘输入的字节数据,回车后,把从键盘输入的数据存放到数组buffer中,并将用户输入的数据保存为指定路径下的文件。 import .*; public class Class1 { public static void main(String args[]) { byte buffer[]=new byte[128]; int n; try { n=(buffer); FileOutputStream out=new FileOutputStream("./",true);//追加 //FileOutputStream out=new FileOutputStream("./",false); (buffer,0,n); ( ); } catch(IOException e) { (e); } } } word文档 可自由复制编辑 3. 编写java应用程序,使用FileInputStream类对象读取程序本身(或其他目录下的文件)并显示在屏幕上。 import .*; public class Class1 { public static void main (String[] args) { try { //FileInputStream fis=new FileInputStream("c:"); FileInputStream fis=new FileInputStream(""); int n; while((n=())!=-1) ((char)n); (); } catch(IOException e) { n(ng()); } } } 4. 编写java应用程序,使用FileInputStream类对象读取程序本身(或其他目录下的文件)到字节数组中,并显示在屏幕上(或存储为其他文件)。 import .*;//读取程序本身,显示在屏幕上 public class Class1 { public static void main (String[] args) { try { FileInputStream fis=new FileInputStream(""); byte[] b=new byte[ble()]; n("文件流的大小:"+ble()); int n=(b); myprint(b); ("实际读取的字节数:"+n); (); } catch(IOException e) { n(ng()); } } static void myprint(byte[] x) { for(int i=0;i<;i++) ((char)x[i]); word文档 可自由复制编辑 } } 5.编写应用程序,程序中创建一个文件输入流对象fis,读取当前目录下文本文件,该文件内容有如下两行文本: Java program is easy. I like it. 从文件输入流fis中读取5个字节数据存放到数组b中,字节数据存放的位置从数组下标3开始。将读取的数据在屏幕输出。 import .*; 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=(b,3,5); (); for(int i=3;i<;i++)//字节数组中从下标3开始的数据转化为字符后输出。 ((char)b[i]+"t"); } } 6.编写应用程序,程序中创建一个文件输出流对象out向当前目录下已有的文件(内容为:"ABCDEFG")写入字符串"abcdefg"中的所有字符和大写字母'A'。 import .*; public class Class1 { public static void main (String[] x) throws IOException { String s="abcdefg"; byte[] b; FileOutputStream out=new FileOutputStream("./",true);//添加字节数据 b=es(); (b,0,); (65);//写入字节数据65---‘A’ (); } } 7.编写两个线程子类,分别用来创建管道输出流和管道输入流,其中管道输出流向管道发送5个0~20之间的随机整数;管道输入流接收管道中传过来的5个随机整数,并求他们的和。编写Java应用程序测试管道流的数据传送。 // import .*; public class TestPipedStream { public static void main( String[] args ) { try {//创建没有连接的管道输出流和管道输入流 word文档 可自由复制编辑 PipedOutputStream out = new PipedOutputStream( ); PipedInputStream in = new PipedInputStream( ); t( in );//连接两个管道流 ThreadOut to = new ThreadOut( out ); ThreadIn ti = new ThreadIn( in ); ( );//启动线程 ( ); } catch( IOException e ) { n( 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<;i++) { data1[i]=(int)(()*20); n("第"+(i+1)+"次发送数据:"+data1[i]); nt(data1[i]);//向管道输出流写入数据 try {sleep(1000);} //线程休眠1000毫秒 catch(InterruptedException e) { } } ( );//关闭流 } catch( IOException e ) { n( e ); } } } /*从管道中读取数据的线程子类:接收管道中传过来的5个随机整数*/ class ThreadIn extends Thread { private int sum=0; //5个随机整数 private DataInputStream dis;//声明数据输入流对象dis public ThreadIn( PipedInputStream in ) { //将数据输入流和管道输入流连接,以便从管道读取int类型的数据 word文档 可自由复制编辑 dis = new DataInputStream( in ); } public void run( ) {//重写线程类的方法,线程启动后将执行该方法 try {//接收输出管道发送的数据: int x; for(int i=0;i<5;i++) { x=t(); sum+=x; n("第"+(i+1)+"次接收数据:" +x+"t接收数据的和:"+sum); try {sleep(1000);} catch(InterruptedException e) { } } ( );//关闭流 } catch( IOException e ) { n( e ); } } } 8.使用RandomAccessFile类及其方法。 import .*; public class Class1 { public static void main( String[ ] args ) { try { //以随机方式写入数据 RandomAccessFile out = new RandomAccessFile( "" , "rw" ); nt(12345);//4 har('A');//2 oolean(true);//1 TF("程序设计");//8 //显示字符‘A' 和”程序设计“ (4); n(ar()); tes(1);//(7); n(F()); n(ePointer()); n(()); (); (); } catch( IOException e ) { word文档 可自由复制编辑 n( e ); ( -2 ); } } } 9.编写应用程序,使用RandomAccessFile类及其方法,把程序本身分两次显示在屏幕上。第一次直接显示,第二次给每一行添加的行号显示。 import .*; public class Test { public static void main( String[ ] args ) throws IOException { RandomAccessFile randomfile = new RandomAccessFile("" , "r" ); String s; while((s=ne())!=null) { n(s); } long filePointer=0,fileLength=(); (0); //文件指针已到文件尾,将文件指针重设到文件开始位置 int i=1; while(filePointer { s=ne(); n((i++)+" "+s); filePointer=ePointer(); } (); } } 10.在程序所在的目录下有子目录b,目录b下有文本文件。编写应用程序,创建文件对象: File file=new File("b/"); 通过文件对象file得到它的文件名、相对路径、绝对路径、父目录名。 import .*; public class Class1 { public static void main( String args[ ] ) { File file=new File("b/"); n("文件名:" + e( ) ); n("相对路径:" + h( ) ); n("绝对路径:" + olutePath( ) ); n("父目录名:" + ent( ) ); } } 11.请编写一个名为的Application,其功能为:测验文件是否存在并输出其长度。 word文档 可自由复制编辑 import .*; public class Class1 { public static void main (String[] args) { File f1=new File("./"); n("is exist:"+( )); n("file length:"+( )); } } 12.编写应用程序:创建目录c:temp,并创建一个文件,向该文件中写入字符串"The first snow came."共5次。 import .*; public class Class1 { public static void main(String args[]) throws IOException { File file1=new File("c:temp"); (); File file2=new File(file1,""); FileOutputStream out1=new FileOutputStream(file2); String s="The first snow came."; byte[] b=es(); for(int i=0;i<5;i++) { (b,0,); } } } 13.过滤文件并显示。 import .*; public class Class1 { public static void main( String[ ] args ) { try { File oDir = new File( "." ); String[ ] strList; //如果没有命令行参数就取当前目录下的所有文件列表 if( 0 == ) strList = ( ); else strList = ( new DirFilter(args[0])); for( int i = 0; i < ; i ++ ) n( strList[ i ] ); } catch( Exception e ) word文档 可自由复制编辑 { n( e ); } } } class DirFilter implements FilenameFilter { String strPick; DirFilter( String pickname ) { k = pickname; } public boolean accept( File dir, String name ) { return th( strPick ); } } 14.编写java应用程序,使用FileReader类对象读取程序本身(或其他目录下的文件)并显示在屏幕上。 import .*;//读取程序本身,显示在屏幕上 public class Class1 { public static void main (String[] args) { try { FileReader fis=new FileReader(""); //FileReader fis=new FileReader("c:"); int n; while((n=())!=-1) ((char)n); (); } catch(IOException e) { n(ng()); } } } 15.编写应用程序,创建BufferedReader的对象,从某个文本文件中的字符输入数据流中读取一行字符(该文件与程序在同一目录下),跳过10个字节后将其显示出来。 import .*; public class Class1 { public static void main(String args[]) throws IOException { BufferedReader b_reader=new BufferedReader(new FileReader("")); String str; word文档 可自由复制编辑 } } b_(10); str=b_ne(); n(str); 三、图形图像、常用组件和事件处理、布局(教材内容的第7章) 练习10(6) 掌握:(1)绘制字符串、字符、字节(2)字体、字型、字号的使用(3)颜色的设置 1. 请编写一个Applet,其功能为:在坐标(20,30)处以绿色显示“我喜欢绿色。 ” ,在坐标(20,60)处以蓝色显示“我也喜欢蓝色。” 。 @程序 import .*; import .*; public class Applet1 extends Applet { public void paint( Graphics g) { or(Color. green); ring("我喜欢绿色。",20,30); or(); ring("我也喜欢蓝色。",20,60); } } 2. 请编写一个Applet,分别以红、绿、黄、粉、白、蓝等六种颜色,在同一行上显示六个数字 1、2、3、4、5、6。 @程序 import .*; import .*; public class Applet1 extends Applet { public void paint(Graphics g) { int j=0; Color color[ ]=new Color[6]; color[0]=; color[1]=; color[2]=; color[3]= ; color[4]=; color[5]=; for(char ch='1'; ch <= '6'; ch++) { or( color[ch-'1']); ring(" "+ch,10+j,30); word文档 可自由复制编辑 } } } j+=20; 3. 请编写一个Applet,以不同的灰度值在一行上显示数字 0 - 9 。 @程序 import .*; import .*; 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++) { or( new Color(red,green,blue)); ring(" "+ch,10+j,30); j+=20; red+=85; green+=85; blue+=85; } } } 4. 编写Java小程序,将字符串“I like java!”重复显示5次,每次显示在1行上。要求显示字体为"Courier"字体,字体风格为斜体,第1行字符串的字体大小是15,后面的每一行的字体大小依次增加5,每行的间隔为30像素。 @程序 import .*; import .*; public class Applet1 extends Applet { Font f1; int size=15; int y=30; String str="I like java!"; public void paint(Graphics g) { for(int i=0;i<5;i++) { f1=new Font("Courier", ,size); t(f1); ring(str,30,y); size+=5; y+=30; } } } word文档 可自由复制编辑 5. 请编写一个Applet,其功能为:在标签上输出字符串 "This is a Java program. "。要求标签以蓝色为背景,以红色为前景。 @程序 import .*; import .*; public class Applet1 extends Applet { Label p=new Label("This is a Java program. "); public void init( ) { add(p); kground(); eground(); } } 6. 请编写一个Applet,以不同颜色在一列上显示字符串 "每个字的颜色都不同!" 。 @程序 import .*; import .*; 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 < ; i++) { or( new Color(red,green,blue)); ring(" "+b[i],20,20+j); j+=15; red+=35; green+=55; blue+=85; } } } 练习11(6) 掌握:(1)画直线(2)画长方形、画正方形(3)画圆、画椭圆、画扇形、画弧 1. 编写Java小程序,将小程序窗口的右上的1/4区域用红色画成实心的长方形;将小程序窗口的左下的1/4区域用蓝色画成实心的长方形。 @程序 import .*; import .*; word文档 可自由复制编辑 public class Applet1 extends Appl et { public void paint(Graphics g) { int w=getSize().width; int h=getSize().height; or(); ct(w/2,0,w/2,h/2); or(); ct(0,h/2,w/2,h/2); } } 2. 请编写一个Applet,其功能为:在Applet窗口中用绿色画一个左上角坐标为 (10,10)、高为90、宽为110的矩形框;然后画内切于该矩形的红色椭圆。 @程序 import .*; import .*; public class Applet1 extends Applet { public void paint( Graphics g ) { or( ); ct(10,10,110,90); or( ); al(10,10,110,90); } } 3. 请编写一个Applet,其功能为:在Applet窗口中先画一条从坐标(100,100)到坐标(200,100)的绿线;然后以该线中心点为圆心,画半径为50,边框为红色的圆。 @程序 import .*; import .*; public class Applet1 extends Applet { public void paint( Graphics g ) { or(); ne(100,100,200,100); or(); al(50,50,100,100); } } 4. 编写Applet,功能为:在Applet窗口中以坐标(100,20)为左上角,填充边长为80、厚度为10的红色正方形框;再以坐标(10,20)为左上角,画边长为80的绿色正方形,然后将其擦去;最后在窗口的状态栏中显示字符串“画的是正方形。”。 @程序 import .*; import .*; public class Applet1 extends Applet { public void paint(Graphics g) { or(); ct(100,20,80,80); or(getBackground( )); ct(110,30,60,60); or(); ct(10,20,80,80); word文档 可自由复制编辑 showStatus("画的是正方形"); for(int i=0; i < _VALUE -1 ; i++); or(getBackground( )); ct(10,20,80,80); } } 5. 请编写一个Applet,其功能为:在窗口中画一个任意的红边的六边形,然后将其擦去。 @程序 import .*; import .*; 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) { or(); lygon(x,y,6); for(int i=0;i<123456789;i++); or(getBackground( )); ct(0,0,getSize().width,getSize().height); } } 6. 请编写一个实现如下功能的Applet:在窗口中从60°开始逆时针画一个30°的绿色扇形,并令其内切于左上角坐标为 (100,60)、长为110、宽为90的矩形区域。 @程序 import .*; import .*; public class Applet1 extends Applet { public void paint(Graphics g) { or(); c(100,60,90,110,60,30); } } 练习12(3) 掌握:标签、文本框的编程。 1. 请编写一个Applet,其功能为:在Applet窗口上摆放两个标签。构造第一个标签时,令其上面的文本信息为“我将参加Java程序设计考试。”,将第二个标签构造为空标签。程序将第一个标签的信息复制到第二个标签上,并增加信息“希望自己考取好成绩。”。要求第一个标签以红色为背景,绿色为前景;第二个标签以绿色为背景,蓝色为前景。 @程序 import ; import .*; word文档 可自由复制编辑 public class Applet1 extends Applet { Label p1=new Label("我将参加Java程序设计考试。"); Label p2=new Label(" "); public void init( ) { add(p1); add(p2); t(t( )+ "希望自己考取好成绩。"); kground(Color. red); eground(); kground(Color. green); eground(); } } 2. 请编写一个Applet实现如下功能:定义一个用于给出提示信息的标签和两个文本框,其中,一个文本框用于获取用户给出的一个整数,求该数的平方后将计算结果置在另一个文本框中输出。 @程序 import .*; import .*; import .*; 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); ionListener(this); } public void actionPerformed(ActionEvent evt) { x=nt(t()); repaint( ); } public void paint(Graphics g) { str=x+" 的平方为: "+(long)(x*x); t(str); } } 3. 请编写一个Applet实现如下功能:定义三个文本框。其中,第一个文本框上面的文本信息为“请输入口令:”;第二个文本框为口令输入域;第三个文本框上的信息由程序设置:若口令(假设口令为字符串”MyKey”)正确,则设置为“通过!”,否则设置为“口令错!”;。 @程序 import .*; import .*; import .*; public class Applet1 extends Applet implements ActionListener word文档 可自由复制编辑 { 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); ionListener(this); } public void actionPerformed(ActionEvent evt) { s=t(); if(("MyKey")) t("通过!"); else t("口令错!"); } } 练习13(8) 掌握:按钮、单选按钮、复选按钮、列表的编程。 1. 编写Applet, 其中包含两个按钮b1、b2,初始时b1的前景为兰色,b2的前景为红色,它们的标签分别为”兰按钮”、”红按钮”。当点击b1时,通过paint()方法在坐标(100,100)处画一个兰色的椭圆框,椭圆的长半轴为30,短半轴为20;点击b2时,在坐标(100,100)处,画一个红色的圆框,圆的半径为50。无论那个按钮被点击,都将该按钮上的标记改为“已按过”,并使该按钮变灰。 @程序 import .*; import java .awt .event .*; import .*; public class Applet1 extends Applet implements ActionListener { int i; Button b1,b2; public void init() { b1=new Button("兰按钮"); b2=new Button("红按钮"); add(b1); eground(); add(b2); eground(); ionListener(this); ionListener(this); } public void paint(Graphics g) { word文档 可自由复制编辑 if(i==1) { or(); al(100,100,60,40); el("已按过"); eground(); } if(i==2) { or(); al(100,100,100,100); el("已按过"); eground(); } } public void actionPerformed(ActionEvent e) { if(rce()==b1) { i=1; } if(rce()==b2) { i=2; } repaint(); } } 2. 编写Applet, 其中包含两个按钮,它们的标签分别为“画正方形”和“画圆”,点击按钮“画正方形”时,通过paint()方法以坐标(10,10)为左上角画一个边长为60的兰色正方形框;点击按钮“画圆”时,画一个半径为50的红色填充圆,该圆内切于左上角坐标为(100,100)的正方形。如果那个按钮被点击,就使该按钮变得不可见。 @程序 import .*; import java .awt .event .*; import .*; 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); ionListener(this); ionListener(this); } public void paint(Graphics g) { if(i==1) { or(Color. blue); ct(10,10,60,60); ible(false); } if(i==2) { or(Color. red); al(100,100,100,100); ible(false); } } public void actionPerformed(ActionEvent e) { if(rce()==btn1) { i=1; } if(rce()==btn2) { i=2; } repaint(); } } 3. 编写Applet, 其中包含两个按钮:按钮上的标签分别为“确定”和“取消”。当点击“确定” 按word文档 可自由复制编辑 钮时,通过paint()方法在坐标(20,80)处,用绿色显示点击“确定”按钮的次数;当点击“取消” 按钮时,通过paint()方法在坐标(20,100)处,用红色显示点击“取消”按钮的次数(要求“确定”和“取消”的次数同时显示在Applet中)。 @程序 import .*; import java .awt .event .*; import .*; 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); ionListener(this); ionListener(this); } public void paint(Graphics g) { or(); ring("你点击了"确定"按钮 "+j+" 次",20,80); or(); ring("你点击了"取消"按钮 "+k+" 次",20,100); } public void actionPerformed(ActionEvent e) { if(rce()==btn1) j++; if(rce()==btn2) k++; repaint( ); } } 4. 编写Applet, 其中包含两个按钮,初始时两个按钮的前景均为绿色。当点击一个按钮时,通过paint( )方法在坐标(10,50)处显示一幅图象,图象名称为,显示的高、宽分别为50、50;图象与嵌入该小应用程序的网页在同一目录(程序中用到的图片由学生在计算机中找)。当点击另一个按钮时,在窗口的状态栏中输出字符串“好漂亮!”。同时要求当反复点击按钮时,就令被点击按钮的前景变为红色,而使另一个按钮的前景恢复为绿色。 @程序 import .*; import java .awt .event .*; import .*; public class Applet1 extends Applet implements ActionListener { int i; Image pic; Button btn1,btn2; public void init() { btn1=new Button("pic1"); btn2=new Button("pic2"); word文档 可自由复制编辑 add(btn1); eground(); add(btn2); eground(); ionListener(this); ionListener(this); pic=getImage(getDocumentBase(),""); } public void paint(Graphics g) { if(i==1) age(pic,10,50,50,50,this); if(i==2) showStatus("好漂亮!"); } public void actionPerformed(ActionEvent e) { if(rce()==btn1) { i=1; eground(); eground(); } if(rce()==btn2) { i=2; eground(); eground(); } repaint(); } } 5. 编写Applet, 显示一幅后缀名为jpg的图片,图片显示的左上角坐标为(20,40),宽、高为80、80像素(图片在计算机中查找)。小程序中还包含两个按钮,按钮名称分别为"放大图片"和"缩小图片"。每次按下"放大图片"按钮时,把图片显示的宽、高分别增加10像素;每次按下"缩小图片"按钮时,把图片显示的宽、高分别减小10像素。 @程序 import .*; import java .awt .event .*; import .*; 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); ionListener(this); ionListener(this); } public void paint(Graphics g) { age(pic,20,40,w,h,this); } public void actionPerformed(ActionEvent e) { if(rce()==btn1) { w+=10; h+=10; } if(rce()==btn2) { w-=10; h-=10; } repaint(); } } word文档 可自由复制编辑 6. 请编写一个Applet,其功能为:在其窗口中摆放三个单选按钮,令它们的标签分别为“选项1”、“选项2”、“选项3”, 初始时,所有按钮均可见;以后,如果某个单选按钮被选中了,就显示它被选中的信息(如,若点击了第二个单选按钮,则显示“你选择了”选项2””), 并使该单选按钮自身不可见,而使其它单选按钮变为可见的。 @程序 import .*; import java .awt .event .*; import .*; 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",optGroup,false); add(opt1); mListener(this); opt2=new Checkbox("选项2",optGroup,false); add(opt2); mListener(this); opt3=new Checkbox("选项3",optGroup,false); add(opt3); mListener(this); } public void paint(Graphics g) { if(b) ring("你选择了"+"""+s+""",20,80); } public void itemStateChanged(ItemEvent e) { b=true; if(rce()==opt1) { ible(false); ible(true); ible(true); s=el( ); } if(rce()==opt2) { ible(true); ible(false); ible(true); s=el( ); } if(rce()==opt3) { ible(true); ible(true); ible(false); s=el( ); } repaint( ); } } 7. 请编写一个Applet,在其窗口中摆放两复选按钮框,显示它们被选中(那个被选中、或两个均被选中、或两个均未选中)的信息。 @程序 import .*; import java .awt .event .*; import .*; public class Applet1 extends Applet implements ItemListener word文档 可自由复制编辑 { private TextField t; private Checkbox opt1,opt2; public void init() { t=new TextField(" ",40); add(t); opt1=new Checkbox("选项1"); add(opt1); mListener(this); opt2=new Checkbox("选项2"); add(opt2); mListener(this); } public void itemStateChanged(ItemEvent e) { String s=""; if(te( )) s="选择了选项1"; if(te( )) s=s+"选择了选项2"; t(s); } } 8. 使用List列表组件,选择画何种几何图形(黄色矩形、绿色圆、红色椭圆、白色扇形、兰色直线之一),并通知程序实现之。 @程序 import ; import .*; import .*; public class Applet1 extends Applet implements ActionListener , ItemListener { List myList; String itemNames[] = { "黄色矩形", "红色圆", "绿色椭圆", "白色扇形", "兰色直线" }; //项目名称 Color colors[] = { , , , , }; //颜色对象数组 int j; boolean b=false; public void init() { myList = new List( 6, false ); for ( int i = 0; i < ; i++ ) ( itemNames[ i ] ); add( myList ); ionListener( this ); mListener( this ); } public void actionPerformed( ActionEvent e ) { } public void itemStateChanged( ItemEvent e ) { b=true; showStatus( ectedItem() + "; index " + ectedIndex() ); word文档 可自由复制编辑 j = ectedIndex(); repaint(); } public void paint( Graphics g ) { if(b) switch(j) { case 0: or( colors[j] );ct(10,10,30,60); break; case 1: or( colors[j] );al(10,10,30,30); break; case 2: or( colors[j] );al(10,10,60,30); break; case 3: or( colors[j] );c(10,10,80,60,30,30); break; case 4: or( colors[j] );ne(10,10,60,60); } } } 练习14(11) 掌握:(1) 鼠标事件(鼠标进入、移出、压下、点击、释放)的编程。 (2) 键盘事件(按下键、松开键、点击键)的编程。 (3) 布局管理器。 1. 编写Applet, 当鼠标进入Applet时,通过paint()方法以(60,60)为左上角坐标,填充一个颜色为黄色的、边长为60的正方形;鼠标移出时,以(60,120)为左上角坐标,画一个颜色为绿色的、边长为30的正方形框。 @程序 import .*; import .*; import .*; public class Applet1 extends Applet implements MouseListener { int i; public void init(){ addMouseListener(this); } public void paint(Graphics g) { if(i==1) { or(Color. yellow); ct(60,60,60,60); } if(i==2) { or(); ct(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)处,显示一幅图像,图像名称为,显示的高、宽分别为50、80;鼠标移出时,在坐标(70,130)处,显示另一幅图像,图像名称为,显示的高、宽分别为80、60。这些图像与嵌入该小程序的网页在同一目录下(程word文档 可自由复制编辑 序中用到的图像在计算机中找)。 @程序 import .*; import .*; import .*; 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) { age(pic1,20,50,50,80,this); } if(i==2) { age(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)处显示一幅图像,图像名称为,显示的高、宽分别为90、90(程序中用到的图像在计算机中找,并使其与嵌入该小程序的网页在同一目录)。点击鼠标时,在窗口的状态栏中输出字符串“这个图像真美丽!”。 @程序 import .*; import .*; import .*; 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) { age(pic,30,30,90,90,this); } if(i==2) showStatus(“这个图像真美丽!”); } public void mouseClicked(MouseEvent e) { i=2; repaint(); } word文档 可自由复制编辑 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, 当压下鼠标时,在鼠标压下处显示字符串“释放鼠标将显示图象”,要求显示字体的名称为"Courier"、普通体、字体大小为25。当释放鼠标时,以鼠标释放处为左上角坐标,显示一幅jpg图像,图像显示的宽、高分别为200、120像素(图像在计算机中查找)。 @程序 import .*; import .*; import .*; 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("Courier",,25); t(f1); ring("释放鼠标将显示图象。",x,y); } if(k==2) { age(pic,x,y,200,160,this); } } public void mouseClicked(MouseEvent e){ } public void mousePressed(MouseEvent e) { k=1; x=(); y=(); repaint(); } public void mouseEntered(MouseEvent e){ } public void mouseExited(MouseEvent e){ } public void mouseReleased(MouseEvent e) { k=2; x=(); y=(); repaint(); } } 5.编写Applet, 当按下键盘键时,在Applet中通过paint()方法,在(25,20)位置处显示你按下的键的名称。 @程序 import .*; import java .awt .event .*; import .*; public class Applet1 extends Applet implements KeyListener word文档 可自由复制编辑 { String name=" "; public void init() { addKeyListener(this); requestFocus(); } } public void paint(Graphics g) { ring ("你按下的键是:"+name,25,20); public void keyPressed(KeyEvent e) { name=Text (Code ()); } } repaint(); } } public void keyReleased(KeyEvent e) { public void keyTyped(KeyEvent e) { 6.编写小程序,响应键盘事件:敲击字母r,改变小程序背景色为red;敲击字母b,改变小程序背景色为blue;敲击字母g,改变小程序背景色为green;其他字母,改变小程序背景色为black。 // import ; import .*; import .*; 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') kground(); } public void keyPressed( KeyEvent e )//键压下时执行 { } public void keyReleased( KeyEvent e )//键释放时执行 { } public void keyTyped( KeyEvent e )////键敲击时执行 { ch=Char(); repaint(); } } 7.编写java小程序,在小程序界面画一个彩色球,当压下键盘上的4个方向键时,彩色球能向指定word文档 可自由复制编辑
版权声明:本文标题:Java程序上机练习题库(含答案) 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1702945521h436915.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论