当前位置:文档之家› 2004~2005《Java程序设计》上机练习题

2004~2005《Java程序设计》上机练习题

2004~2005《Java程序设计》上机练习题
2004~2005《Java程序设计》上机练习题

2004《Java程序设计》

上机练习题

(共包括四部分、16个练习、共96个练习题,请使用“视图”中的“文档结构图”查看)一、java语言基础和面向对象(教材内容的第1、2、3章)

练习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(""+x+"+"+y+" 约等于");

out2.setText(""+(int)((x+y)*10000)/10000.0);

}

}

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(""+k+" 的平方根约等于"+

(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(""+k+" 的平方根约等于"+(float)Math.sqrt(k),20,20);

else

g.drawString(""+k+" 的平方等于"+k*k,20,20);

}

}

4. 请编写一个Application,其功能为:取一个小于800的正随机整数,将其以如下形式输出:

所取随机数为:***

它的百位数字为:*

它的十位数字为:*

它的个位数字为:*

@程序

//import java.io.*;

public class Class1

{

public static void main (String[] args)

{

int x=(int)(Math.random( )*800);

System.out.println("所取随机数为:"+x);

System.out.println("它的百位数字为:"+x/100);

System.out.println("它的十位数字为:"+x%100/10);

System.out.println("它的个位数字为:"+x%10);

//try{ System.in.read( ); }catch(IOException e){ }

}

}

练习2(5)

掌握:(1)数组的定义、创建和初始化。

(2)方法的定义和调用。

(3)方法的参数是数组、方法的返回值是数组的编程。

(4)方法的递归调用。

(5)在应用程序中,接受并处理命令行参数。

1.请编写一个Applet,其中定义了两个double类型数组a和b,还定义了一个方法square( )。数组a 各元素的初值依次为1.2、

2.3、

3.4、

4.5、

5.6,数组b各元素的初值依次为9.8、8.7、7.6、

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

g.drawString(""+x[i],20+i*40,20);

for(int i=0; i

g.drawString(""+y[i],20,40+i*20);

}

float[ ] square(double x[ ])

{

float[ ] y=new float[x.length];

for(int i=0; i< x.length; i++)

y[i]=(float)(x[i]*x[i]);

return y;

}

}

2. 请编写一个Application实现如下功能:在主类中定义两个double类型数组a和b,再定义一个方法sqrt_sum( )。数组a各元素的初值依次为1.2、2.3、

3.4、

4.5、

5.6,数组b各元素的初值依次为9.8、8.7、7.6、

6.5、5.4、4.3;方法sqrt_sum ( )的参数为double类型的数组,返回值类型为float型,功能是求参数各元素的平方根之和。请在主方法main()中分别以a和b为实在参数调用方法sqrt_sum ( ),并将返回值输出在屏幕上。

@程序

//import java.io.*;

public class Class1

{

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)

{

System.out.println("数组a各元素的平方根之和为:"+sqrt_sum(a));

System.out.println("数组b各元素的平方根之和为:"+sqrt_sum(b));

//try{ char c=(char)System.in.read( );}catch(IOException e){ }

}

static float sqrt_sum(double[ ] x)

{

double y=0.0;

for(int i=0; i

y+=Math.sqrt(x[i]);

return (float)y;

}

}

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):"+f1(4));

System.out.println("用递归实现求n! 的结果(n=4):"+f2(4));

//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;

return k;

}

static long f2(int n)

{

if(n==1) return 1;

else return n*f2(n-1);

}

}

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+"+"+y+"="+(x+y)); break;

case '-': System.out.println(x+"-"+y+"="+(x-y)); break;

case '*': System.out.println(x+"*"+y+"="+(x*y)); break;

case '/': System.out.println(x+"/"+y+"="+(x/y)); break;

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 的最小元素的值为: "+ arrayMin(a),20,20);

g.drawString("数组b 的最小元素的值为: "+ arrayMin(b),20,40);

}

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+"的平方根为: "+mySqrt(n));

System.out.println(f+"的平方根为: "+mySqrt(f));

System.out.println(d+"的平方根为: "+mySqrt(d));

}

else { System.out.println("缺命令行参数!"); System.exit(-1); }

static int mySqrt(int x)

{ return (int)Math.sqrt(x); }

static 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("12345+67 = "+ addM(12345,67),20,40);

g.drawString("89.6+6.9e-8 = "+ addM(89.6f,6.9e-8),20,60);

g.drawString("0.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的值。

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("f="+x.f+" k="+x.getk( )+" 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( );

System.out.println("d="+b.d+" f="+b.f);

System.out.println("d的整数部分="+b.int_d(b.d)+" f的整数部分="+b.int_f(b.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("main( ) 中的i="+i);

m1( );

m2( );

}

static void m1( )

{

int i=789;

System.out.println("m1( ) 中的i="+i);

}

static void m2( )

{

System.out.println("类变量i="+i);

i+=6;

System.out.println("加6后的类变量i="+i);

}

}

练习5(5)

掌握:(1)方法的参数为类对象、方法的返回值为类对象。

(2)方法覆盖:在子类中调用被子类覆盖了的父类的同名方法。

(3)属性隐藏:在子类中访问被子类隐藏了的父类的同名属性。

(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=" + x 1.i+" ch="+ x 1.ch,20,20);

g.drawString("对象x1的属性值: i=" + x 2.i+" ch="+ x 2.ch,20,40);

a1=b(x1); a2=b(x2);

g.drawString("以x1为实参调用方法b( ) 生成的新的A类对象的属性值: i="

+a1.i+" ch="+a1.ch,20,60);

g.drawString("以x2为实参调用方法b( ) 生成的新的A类对象的属性值: i="

+a2.i+" ch="+a2.ch,20,80);

g.drawString("调用后,对象x1的属性值: i=" + x 1.i+" ch="+ x 1.ch,20,100);

g.drawString("调用后,对象x1的属性值: i=" + x 2.i+" ch="+ x 2.ch,20,120);

}

A b(A y)

{

A a=new A((short)0,' ');

a.i=(short)(y.i+3);

a.ch=(char)(y.ch+3);

return a;

}

}

class 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("x="+x,20,20); }

}

class B extends A

{

int y=16;

String s="java program!";

void myPrint(Graphics g)

{ g.drawString("y="+y+" s="+s,20,40); }

void printAll( Graphics g)

{ super.myPrint(g); myPrint(g); }

}

3. 请按如下要求定义两个类A和B, 类A中定义一个方法area(float r), 其返回值类型为float型,该方法的功能是返回半径为r的圆的面积(圆的面积公式为: 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("半径为"+r+"的圆的面积="+super.rear(r)

+" 同半径的球的表面积="+rear(r));

}

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

{

B b=new B("这是父类的x.",68 );

public void paint(Graphics g)

{ b.myPrint(g); }

}

class A

{

String x;

A(String x1){ x=x1; }

}

class B extends A

{

int x;

B(String x1,int x2){ super(x1); x=x2; }

void myPrint(Graphics g)

{ g.drawString("父类A中x的值="+super.x+" 子类B中x的值="+x,20,30); }

}

5. 请编写Applet,它由三个类定义组成, 类名分别为A、B和Applet1:类A中定义了类型为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 的值。

import java.awt.*;

import java.applet.*;

public class Applet1 extends Applet

{

double d=32.6;

B b=new B(50,7.2f,'h',true );

public void paint(Graphics g)

{

g.drawString("i="+b.i+" f="+b.f+" ch="+b.ch+" b="+b.b+" d="+d,10,30);

}

}

class A

{

int i;

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)的结果:"+method1(2),20,20);

g.drawString("调用method2(2,8)的结果:"+method2(2,8),20,40);

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。再定义以类V olumeArea为父类的子类V olumeAndArea,在该子类中实现父类中的抽象方法:方法volume(double r) 的功能是求半径为r的球的体积(公式为:4πr3÷3);方法area(double r)的功能是求半径为r的圆的面积(公式为:πr2)。请编写一个Application ,在其主类中定义一个V olumeAndArea类的对象x,通过对象x求半径为r(r的值由命令行给定)的球的体积及该球最大切面的圆的面积,并输出计算结果。

@程序

public class Class1

{

static V olumeAndArea x=new V olumeAndArea( );

public static void main(String[ ] args)

{

float r=Float.valueOf(args[0]).floatValue( );

System.out.println("半径为"+r+"的球的体积="+x.volume(r));

System.out.println("半径为"+r+"的圆的面积="+ x.area(r));

}

}

abstract class VolumeArea

{

static final float myPI=3.14159f;

public abstract float volume(double r);

public abstract float area(double r);

}

class V olumeAndArea extends V olumeArea

{

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("半径为"+r+"的圆的周长="+m1(r));

System.out.println("半径为"+r+"的圆的面积="+myPI*r*r);

}

}

4.编写应用程序,功能为:从命令行传入一个包含十个字符的字符串,把该字符串与程序中给定的字符串"bacdbcabca"依次比较,统计两个串中对应字符相等的数目。然后输出命令行输入的字符串,并把两个串中对应字符不相等的字符替换为'@'后生成的新串输出,最后输出两个串中相等字符的数目。

@程序

public class Class1

{

public static void main(String args[]) throws IOException

{

if(args[0].length()<10) System.out.print("Enter a string:include 10 chars");

else

{ String str=new String("bacdbcabca");

int n=0;

System.out.print("The Standard answer:");

for (int x=0;x

System.out.print(" "+str.charAt(x));

System.out.println();

System.out.print("The Student answer:");

for (int x=0;x

{

if (args[0].charAt(x)==str.charAt(x))

{ n++; S ystem.out.print(" "+args[0].charAt(x)); }

else System.out.print(" "+"@");

}

System.out.println( );

System.out.println("The correct answers:"+n);

}

}

}

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

if((int)args[0].charAt(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( "Usage: string1 string2");

System.exit(-1);

}

if(args[0].equals(args[1]))

System.out.println( args[0]+" 和"+args[1]+" 相等");

else

System.out.println( args[0]+" 和"+args[1]+" 不等");

}

}

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("和:"+(a+b+c));

System.out.println("积:"+(a*b*c));

System.out.println("最大值:"+Math.max(c,Math.max(a,b)));

System.out.println("最小值:"+Math.min(c,Math.min(a,b)));

}

}

}

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("Usage:number1 number2");

System.exit(-1);

}

x=Float.valueOf(args[0]).floatValue( );

y=Integer.parseInt(args[1]);

str=str+x+" 的"+y+" 次方= "+(Math.pow(x,y));

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("Please input int numbers!");

else

{

int x[]=new int[n];

for(int i=0;i

x[i]=Integer.parseInt(args[i]);

System.out.println("max="+ArrayMax(x));

System.out.println("min="+ArrayMin(x));

System.out.println("ave="+ArrayAve(x));

}

}

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=" ";

JAVA程序设计期末考试题(多套含答案)

《JA V A程序设计》期末考试试题(五) 一、单选题 1、当某一线程正处于休眠状态,而另一个线程用Thread 类中的interrupt() 方法中断它时,抛出的异常类型是()。 A) IOException B) RuntimeException C) InterruptedException D) ClassNotFoundException 2、下面的程序段的功能是( )。 File file1=new File("d:\\xxx\\yyy\\zzz"); file1.mkdirs(); A)在当前目录下生成子目录:\xxx\yyy\zzz B)生成目录:e:\xxx\yyy\zzz C)在当前目录下生成文件xxx.yyy.zzz D)以上说法都不对 3、应用程序的main方法中有以下语句,则输出的结果是( )。 String s = "xxxxxxxxxxxxxxx#123#456#zzzzz"; int n = s.indexOf("#"); int k = s.indexOf("#", n+1); String s2 = s.substring(n+1, k); System.out.println(s2); A) 123456 B) 123 C) xxxxxxxxxxxxxxx D) zzzzz 4、关于下面的程序Test.java说法正确的是( )。 public class Test { String x="1"; int y; public static void main(String args[]) { int z=2; System.out.println(x+y+z); } } A)3 B)102 C) 12 D)程序有编译错误 5、应用程序的main方法中有以下语句,则输出的结果是( )。

JAVA程序设计习题库及答案

第一章JAVA语言概论 一、选择题 1。下列不属于java语言鲁棒性特点的是:A.java能检查程序在变异和运行时的错误 B。java 能运行虚拟机实现跨平台 C。java 自己操纵内存减少了内存出错的可能性D。java 还实现了真数组,避免了覆盖数据的可能2.java语言的执行模式是: A。全编译型 B.全解释型 C.半编译和半解释型 D.同脚本语言的解释模式 3.下列关于虚拟机说法错误的是: A。虚拟机可以用软件实现 B.虚拟机部可以用硬件实现 C.字节码是虚拟机的机器码 D.虚拟机把代码程序与各操作系统和硬件分开 4。java语言是1995年由()公司发布的 A.Sun B。Microsoft C.Borland D.Fox Software 5.下列不是虚拟机执行过程特点的是 A。双线程

B.多线程 C.动态链接 D.异常处理 6.java以JVM为基础,最下层是移植接口,由适配器和()组成A.网卡 B。Java os C。Java基本类 D。Java 应用程序和applet小程序 7。java程序的执行过程中用到一套JDK工具,其中javac.exe指A.java语言编译器 B.java字节码解释器 C.java文档生成器 D.java类分解器 8.java的API结构中,不属于类库主要包括的核心包的是 A.java包 B。javax C.javadoc包 D.org扩展包 9.每个java的编译单元可包含多个类或界面,但是每个编译单元最多只 能有()类或者界面是公共的 A.一个 B。两个 C。四个 D。任意多个

10.在当前的java实现中,每个编译单元就是一个以()为后缀的文件 A。java B.class C。doc D.exe 二、填空题 1. 1991年,SUN公司的Jame Gosling和Bill Joe等人,为电视、控制烤面包机等家用电器的交互操作开发了一个____软件,它是java的前身. 2. java是一个网络编程语言,简单易学,利用了____的技术基础,但又独立于硬件结构,具有可移植性、健壮性、安全性、高性能。 3. java可以跨平台的原因是____ 4. JVM的执行过程有三个特点:多线程,_____,异常处理; 5.JAVA程序的安全性体现在多个层次上,在_____,有语法检查;在解释层上,有字节码校验器、测试代码段格式和规则检查,访问权限和类型转换和法性检查,操作数堆栈的上溢或下溢,代码参数类型合法性等;在平台层上,通过配置策略,可设定访问资源域,而无需区分本地或远程。 6。 JAVA的产品主流操作系统平台是Solaris、_____和Macintosh. 7. JAVA系统运行时,通过______机制周期性的释放无用对象所使用的内存,完成对象的清除。 8。在JAVA语言中,将后缀名为______的源代码文件编译后形成后缀名为.c lass的字节码文件。 9。 JAVA语言的执行模式是半编译和______. 10. JAVA类库具有_____的特点,保证了软件的可移植性。 11。在编写执行JAVA程序的过程中需要用到一些工具,SUN公司为我们提供了一套JDK工具,它主要包括:javac.exe、java。exe、_____、ja vap.exe、jkb。exe 12.JAVA程序包括源代码(.java文件)、______、由归档工具jar生成的。jar文件、对象状态序列化.ser文件.

Java程序设计在线作业-单选题2

Java程序设计在线作业2 一、单选题(共 10 道试题,共 30 分。) 1. 下列程序的输出结果是import java.io.*; public class abc { public static void main(String args[]) { String s1="Hello!"; String s2=new String("World!"); System.out.println(s1.concat(s2)); } } A. false B. Hello! C. Hello!Wofld! D. 12 2. 在浏览器中执行applet 程序,以下选项中的哪个方法将被最先执行()。 A. init() B. start() C. destroy() D. stop() 3. Java语言的类型是() A. 面向对象语言 B. 面向过程语言 C. 汇编程序 D. 形式语言 4. 下列哪一项不属于Awt布局管理器?() A. GridLayout B. CardLayout C. BorderLayout D. BoxLayout

5. 下面代码的执行结果是什么?( )<% x=3; %><% int x=5; %><%! int x=7; %> x = <%=x%>, <%=this.x%> A. x = 3, 5 B. x = 3, 7 C. x = 5, 3 D. x = 5, 7 6. Java Applet 源程序文件的扩展名为()。 A. .java B. .class C. .html D. .exe 7. 在Java Applet程序用户自定义的Applet子类中,一般需要重载父类的()方法来完成一些画 图操作。() A. start() B. stop() C. init() D. paint() 8. 阅读下面的代码,第10行的语句将调用哪个方法?() 1. class Person { 2. public void printValue(int i, int j) {/*…*/ } 3. public void printV alue(int i){/*...*/ } 4. } 5. public class Teacher extends Person { 6. public void printValue() {/*...*/ } 7. public void printValue(int i) {/*...*/} 8. public static void main(String args[]){ 9. Person t = new Teacher(); 10. t.printValue(10); 11. } 12. } A. 行2 B. 行3 C. 行6

Java语言程序设计二级考试模拟试卷

Java语言程序设计二级考试模拟试卷一 (考试时间90分钟,满分100分) 一、选择题(1~20题每题2分,20~30题每题3分,计70分) 在下列各题的A、B、C、D、四个选项中,只有一个选项是确定的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。 1、下列叙述中正确的是()。 A、线性表是线性结构 B、栈和队列是非线性结构 C、线性链表是非线性结构 D、二叉树是线性结构 2、下列关于队列的叙述中正确的是()。 A、在队列中只能插入数据 B、在队列中只能删除数据 C、队列是先进先出的线性表 D、队列是先进后出的线性表 3、设有下列二叉树: 对此二叉树前遍历的结果是()。 A、ABCDEF B、DBEAFC C、ABDECF D、DEBFCA 4、设树T的度为4,其中度为1、2、3、4的结点个数分别是4,2,1,1。则T中的叶子结点数是()。 A、8 B、7 C、6 D、5 5、结构化程序设计主要强调的是()。 A、程序的规模 B、程序的易读性 C、程序的执行效率 D、程序的可移植性 6、下面对对象概念描述错误的是()。 A、任何对象都必须有继承性 B、对象是属性和方法的封装体 C、对象间的通讯靠消息传递 D、操作是对象的动态属性 7、在软件测试中,以发现各模块内部可能存在的各种错误为目的的测试是()。 A、集成测试 B、单元测试 C、黑盒测试 D、白盒测试 8、软件需求分析阶段的工作,可以分为四个方面,需求获取、需求分析、编写需求规格说明书以及()。 A、阶段性报告 B、需求评审 C、总结 D、信息隐藏 9、在关系数据库中,用来表示实体之间联系的是()。 A、树结构 B、网结构 C、线性表 D、二维表 10、在关系数据库中,当数据的存储结构改变时,其逻辑结构可以不变,因次,基于逻辑结构的应用程

《JAVA语言程序设计》期末考试试题及答案(应考必备题库)

《JA V A语言程序设计》期末考试试题及答案2(应考必备题库) 一.判断题 1.Java的源代码中定义几个类,编译结果就生成几个以.class为后缀的字节码文件。(√)2.Java程序里,创建新的类对象用关键字new,回收无用的类对象使用关键字free。(×)1.Java的源代码中定义几个类,编译结果就生成几个以.class为后缀的字节码文件。(√)2.Java程序里,创建新的类对象用关键字new,回收无用的类对象使用关键字free。(×3.Java有垃圾回收机制,内存回收程序可在指定的时间释放内存对象。(×)4.构造函数用于创建类的实例对象,构造函数名应与类名相同,返回类型为void。(×)5.在异常处理中,若try中的代码可能产生多种异常则可以对应多个catch语句,若catch 中的参数类型有父类子类关系,此时应该将父类放在后面,子类放在前面。(√)6.拥有abstract方法的类是抽象类,但抽象类中可以没有abstract方法。(√)7.Java的屏幕坐标是以像素为单位,容器的左下角被确定为坐标的起点。(×)8.静态初始化器是在其所属的类加载内存时由系统自动调用执行。(√)9.在Java中对象可以赋值,只要使用赋值号(等号)即可,相当于生成了一个各属性与赋值对象相同的新对象。(×) 二.单项选择题 1.Java application中的主类需包含main方法,以下哪项是main方法的正确形参?() A、String args B、String ar[] C、Char arg D、StringBuffer args[] 2.以下关于继承的叙述正确的是()。 A、在Java中类只允许单一继承 B、在Java中一个类只能实现一个接口 C、在Java中一个类不能同时继承一个类和实现一个接口 D、在Java中接口只允许单一继承 3.paint()方法使用哪种类型的参数? () A、Graphics B、Graphics2D C、String D、Color 4.以下哪个不是Java的原始数据类型() A、int B、Boolean C、float D、char

java程序设计试题库

《Java语言程序设计基础教程》 练习思考题参考答案 第1章Java程序设计概述 1、1单项选择题 1.编译Java Application源文件将产生相应得字节码文件,扩展名就是什么 A、、java ???? B、、class ?C、、html??? D、、exe 解答:B 2.Java语言具有许多优点与特点,下列选项中,哪个反映了Java中“一次编 译,随处运行”得特点. ?A、简单性????B、平台无关性 C、面向对象性???? D、安全性 解答:B 3.Java语言具有许多优点与特点,下列选项中,哪个反映了Java中并行机制得 特点。 ?A、多线程???B、平台无关性 C、面向对象性??? D、安全性 解答:A 4。在Java语言中,下列哪些语句关于内存回收得说明就是正确得? ?A.程序员必须创建一个线程来释放内存; B.内存回收程序负责释放无用内存; C.内存回收程序允许程序员直接释放内存; D.内存回收程序可以在指定得时间释放内存对象 解答:B 5.一个Java源文件中最多只能有多少个public类。 ?A、1个?B、2个

C、3个? D、任意多个 解答:A 6。下面哪一个不就是Java语言所具有得特点。 A、没有全局变量,在类得定义外部没有任何得变量定义; ?B、不直接支持指针操作,而使用更安全得引用类型; C、支持子类对父类得多继承; D、具有自动垃圾收集功能; 解答:C 7。下面哪一个不就是Java开发工具包JDK得组成部分. ?A、Java得编译器; B、Java得解释器;? ?C、Java得API继承类库; ?D、Eclipse开发工具; 解答:C 8。JDK提供得编译器就是()。 ?A、java、exe???B、javac、exe C、javap、exe??? D、javaw、exe 解答:B 9。作为Java应用程序入口得main方法,其声明格式可以就是() A、public voidmain(String[]args) B、public static void main(String []args) C、public static void Main(String* args) D、public int main(String []args) 解答:B 10.下列说法正确得就是( A ) A、JAVA程序得main方法必须写在类里面 B、JAVA程序中可以有多个main方法 C、JAVA程序中类名必须与文件名一样 D、JAVA程序得main方法中如果只有一条语句,可以不用{}(大括号)括起来 11。下列哪些语句关于Java内存回收得说明就是正确得? ( B) A、程序员必须创建一个线程来释放内存

Java程序设计习题附答案(一)

Java程序设计题库 第一部分绪论 1、下列关于Java语言的特点,描述错误的是(C) A.Java是跨平台的编程语言B.Java支持分布式计算 C.Java是面向过程的编程语言D.Java支持多线程 2、Java语言具有许多优点和特点,下列选项中,哪个反映了Java程序并行机制的特点?(B) A、安全性 B、多线性 C、跨平台 D、可移植 3、Java JDK中调试器的命令是(C)。 A、javac B、java C、jdb D、avah 4、运行jar文件中class文件需要在java命令后面加的参数为(A)。 A、-cp B-g C-d D-verbose 5、下面哪项在java中是不合法的标识符?(C) A、$user B、point C、You&me D、_endline 6、下面关于Java语言说法正确的是(ABCD)。 A、Java语言是面向对象的、解释执行的网络编程语言。 B、Java语言具有可移植性,是与平台无关的编程语言。 C、Java语言可对内存垃圾自动收集。 D、Java语言编写的程序虽然是“一次编译,到处运行”,但必须要有Java的运行环境。 7、在Java程序设计中,程序员创建()文件,然后编译器把它们转化为()文件。( B) A、源, HTML B、源, 字节代码 C、字节代码, 源 D、HTML, 字节代码 8、Java的JVM是指(B)。 A、由Java操作的家用设备(通常是一个漂亮的小烤箱) B、Java字节代码的解释程序 C、Java源代码的编译器 D、运行Java 所需的硬件设备 9、在Java中,关于CLASSPA TH环境变量的说法不正确的是(A)。 A、CLASSPATH一旦设置之后不可修改,但可以将目录添加到该环境变量中。 B、编译器用它来搜索各自的类文件。 C、CLASSPATH是一个目录列表。 D、解释器用它来搜索各自的类文件。 10、一个可以独立运行的Java应用程序(D)。

JAVA语言程序设计期末考试试题及答案

1234124JAVA语言程序设计考试试题及部分答案 一、单选题:(每题1分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项的标记写在题干后的括号内。 1.下列语句序列执行后,k 的值是( B ) 。 int m=3, n=6, k=0; while( (m++) < ( -- n) ) ++k; A)0 B) 1 C) 2 D) 3 2.设i 、j 为int 型变量名, a 为int 型数组名,以下选项中,正确的赋值语句是( B ) 。 A)i = i + 2 B) a[0] = 7; C) i++ - --j; D) a(0) = 66; 3.Java语言的类间的继承关系是(B )。 A)多重的B) 单重的C) 线程的D) 不能继承 4.设有定义int i = 6 ; ,则执行以下语句后,i 的值为( C ) 。 i += i - 1; A) 10 B) 121 C) 11 D) 100 5.下列选项中,用于在定义子类时声明父类名的关键字是( C ) 。 A) interface B) package C) extends D) class 6.若已定义byte[ ] x= {11,22,33,-66} ; 其中O W k<3,则对x数组元素错误的引用是(C )。 A) x[5-3] B) x[k] C) x[k+5] D) x[0] 7.下列语句序列执行后, ch1 的值是( B ) 。 char ch1='A',ch2='W'; if(ch1 + 2 < ch2 ) ++ch1; A) 'A' B) 'B' C) 'C' D) B

java程序设计模拟试题四

《Java 程序设计》模拟试题四 一、选择题(每小题2分,共20分) 1. 以下哪个是合法的标识符? ( C ) A. 7star B. else C. my$ D. super 2. 设有对象obj 具有属性a 则访问该属性的方法为( A )。 A. obj.a B. a.obj() C. a.obj D. obj.a() 3. 下列关于关键字this 和super 的说法正确的是( C )。 A. this 是调用父类的方法和变量 B. super 是调用本类中的方法 C. super 是调用父类的方法和变量 D. 没有区别 4. 以下关于重载(overload )的定义哪个正确?( B ) A.在一个类中,定义了多个具有相同名字的方法,但这些方法有不同的输出参数。 B.在一个类中,定义了多个具有相同名字的方法,但这些方法有不同的输入参数。 C.在一个类中,定义了多个具有相同名字的方法,并且这些方法有相同的输入参数。 D.在一个方法体中定义了多行代码。 5. 有如下代码段: int i=2; int j=3; if((i==2)||(j++==3)) i++; if((j==4)||(i++==3)) j++; System.out.printf("i="+i+"j="+j); 该程序运行的结果为: ( C )。 A .i=4,j=4 B.i=3,j=5 C .i=4,j=5 D.以上都不是 6. Java 程序用以下哪个命令可编译源文件? ( D ) A. Java B. appletviewer C. Javadoc D. Javac 7. 以下说法正确的个数为 ( B )。 ①构造方法中this 语句必须放在第一句; ②构造方法中super 语句不一定放在第一句; ③final 修饰的变量只能赋值一次; ④static 修饰的变量在该对象的一个实例中被修改,在另一个实例中也可以取得该变量的新值。 A. 1 B. 2 C. 3 D. 4 8. 下列修饰词,可以用来定义接口中方法的为 ( C )。 A. private B. protected C. public D.以上都不是 9. 关于继承的说法正确的是( B )。 A.子类将继承父类所有的属性和方法。 B.子类将继承父类的非私有属性和方法。 C.子类只继承父类public 方法和属性 D.子类只继承父类的方法,而不继承属性 10. 下列关于Java 程序中数组的使用说法正确的是( A )。 A.数组必须在使用前定义 B.同一个数组中的元素类型必须不同 C.数组是一种特殊的变量不需在使用前声明 D.数组的元素不可以是数组 评分标准:本题为单项选择题,每小题2分,共10道小题,共20分;每小题选对给2分,选错、多选、不选不给分也不扣分。 二、填空题(每空1分,共10分) 1. Java 的特点有: 简单性、可靠性和安全性、面向对象、平台无关和解释执行、分布式、多线 程等 (不少于4条)。 评分标准:只要写出四条即可给1分,不写或少于四条不给分,也不扣分。 2. Java 的注释有以下三种: 单行注释(//)、多行注释(/* */)、文档注释(/** */) 。 评分标准:本题答案不唯一,只要写出3条即可给1分,不写或少于3不给分,也不扣分。备注:不写汉字,只写括号中的符号也算正确,或者汉字和符号的组合也对。 3. 建立文件”file.txt ”的字节输入流的语句是 FileInputStream in=new FileInputStream (”file.txt ”) 。 评分标准:本题正确给1分,不正确或不写、错误不给分也不扣分。备注:本题答案不唯一,只要是表达出使用字节流类进行文件的字节输入即可,变量名可以不同,只要符合标识符的定义即可。 4. Java 中所有类都是类 Object 的子类。 评分标准:本题正确给1分,不正确或不写、错误不给分也不扣分。备注:首字母必须大写,否则算错不给分,写对象也算正确。 5. Throwable 的两个直接子类是 Error 、 Exception ,在方法头部声明方法可能会 抛出异常使用 throws 关键字。 评分标准:本题正确给3分,不正确或不写、错误不给分也不扣分。备注:Error 、Exception 的首字母必须大写,否则算错不给分;写出对应的汉语也算正确。 6. abastract 方法是一种仅有方法头,没有具体方法体和操作实现的方法,该方法必须在 抽象类中定义。 final 方法是不能被当前类的子类重新定义的方法。 评分标准:本题正确给2分,不正确或不写、错误不给分也不扣分。备注:写出对应的汉语也算正确,例如,抽象和最终。 7. 按照功能组织类和接口的名称空间称为 package 。 评分标准:本题正确给1分,不正确或不写、错误不给分也不扣分。备注:写出对应的汉语也算正确,例如,包。 三、简答题(每小题5分,共20分) 1. 有如下程序: Moveable.java 文件中有如下代码 interface Moveable{ void move(int x,int y); void jump(int x, int y); } Monkey.java 中如下代码: class Monkey implements Moveable{ public void jump(int x,int y){ System.out.printf(“I am jumping from %d to %d ”,x,y); } 专业班级: 姓名: 学号: …………………………密………………………………封………………………………线…………………………

《java程序设计》作业答案

《JA V A程序设计》作业答案 一、选择题 1、编译HelloWorld.java的正确命令是: C) javac HelloWorld.java 2、正确运行HelloWorld.java的正确命令是: A)java HelloWorld 3、下面程序代码,使用多行注释正确的是: C)/* int k=9; int j=8; k = k + j; */ 4、long型的取值范围是: D)-263~263-1 5、下面不属于Java保留字的是: C)malloc 6、下面属于非法的Java标识符的是: D) abc-d 7、对与System.out.println()语句解释合理的是: C)执行后输出一个空行 8、阅读下面的代码,回答问题, for( m = 0 ; m > -2 ; m -- ){….} For循环执行多少次: C)2 9、阅读下面的代码,回答问题, for( m = 0; m < 5; m++ ) { System.out.print( m + "," ); if( m == 3 ) break; } 执行结果是: C)0,1,2,3, 10、阅读下面的代码,回答问题, public class Ex { int x = 1; void m() { int x = 3; System.out.print( "x= " + x); } public static void main( String[] args ) { Ex ex = new Ex();

ex.m(); } } 执行结果是: B)x=3 11、下面语句在编译时不会出现错误信息的是: a) float f = 1.3; b) char c = "a"; c) byte b = 257; d) boolean b = null; e) int i = 10; 12、编译和运行下面的代码,会有什么结果产生: public class MyClass { public static void main(String arguments[]) { amethod(arguments); } public void amethod(String[] arguments) { System.out.println(arguments); System.out.println(arguments[1]); } } a) 错误,静态方法不能直接引用非静态方法b) 错误,主方法有错误 c) 错误,数据定义有错误d) 方法amethod必须被声明为String型 13、编译期间会出错的是: a) import java.awt.*; package Mypackage; class Myclass {} b) package MyPackage; import java.awt.*; class MyClass{} c) /*This is a comment */ package MyPackage; import java.awt.*; class MyClass{} 14、byte型的变量的表示范围为: a) -128 to 127 b) (-2 power 8 )-1 to 2 power 8 c) -255 to 256 d) 依赖Java虚拟机而定 15、在命令行运行命令:java myprog good morning 会有什么结果显示出来: public class myprog{ public static void main(String argv[]) { System.out.println(argv[2]) } } a) myprog b) good c) morning

非常经典的JAVA编程题全集(50题及答案)

【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少 //这是一个菲波拉契数列问题 public class lianxi01 { public static void main(String[] args) { System.out.println("第1个月的兔子对数: 1"); System.out.println("第2个月的兔子对数: 1"); int f1 = 1, f2 = 1, f, M=24; for(int i=3; i<=M; i++) { f = f2; f2 = f1 + f2; f1 = f; System.out.println("第" + i +"个月的兔子对数: "+f2); } } } 【程序2】 题目:判断101-200之间有多少个素数,并输出所有素数。 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。 public class lianxi02 { public static void main(String[] args) { int count = 0; for(int i=101; i<200; i+=2) { boolean b = false; for(int j=2; j<=Math.sqrt(i); j++) { if(i % j == 0) { b = false; break; } else { b = true; } } if(b == true) {count ++;System.out.println(i );} } System.out.println( "素数个数是: " + count); } } 【程序3】 题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。 public class lianxi03 { public static void main(String[] args) { int b1, b2, b3; for(int m=101; m<1000; m++) {

java程序设计习题集

Java程序设计习题集 第一章Java基础知识 §1.1Java概述 1.完成在Windows 2000操作系统下环境变量的配置 2.创建一个Java程序,输出自己的基本信息:名字和年龄。 3.概述Java语言的版本发展过程。 4.简述Java语言的运行机制。 5.在自己的机器上用JDK开发运行环境完成第一个Java程序的编辑、编译、运行过程。 6.简述Java语言的特点,Java虚拟机的概念及作用。 §1.2 Java基本语法 1.什么是变量?什么是常量? 2.什么叫表达式,Java语言中共有几种表达式? 3.下面哪些表达式不合法?为什么? HelloWorld 2Thankyou _First -Month 893Hello non-problem HotJava implements $_MyFirst 4. 以下的选项中能正确表示Java语言中的一个整型常量的是( )。 A) 12. B) -20 C) 1,000 D) 4 5 6 5. 以下选项中,合法的赋值语句是( )。 A) a = = 1; B) ++ i; C) a=a + 1= 5; D) y = int ( i ); 6. 若所用变量都已正确定义,以下选项中,非法的表达式是( )。 A) a != 4||b==1 B) 'a' % 3 C) 'a' = 1/2 D) 'A' + 32 7. 若有定义int a = 2;则执行完语句a += a -= a * a; 后,a的值是( )。 A) 0 B) 4 C) 8 D) -4 8. 在Java语言中,逻辑常量只有true 和 ___________ 两个值。 9. Java语言中的浮点型数据根据数据存储长度和数值精度的不同,进一步分为float 和 __________两种具体类型。 10. Java语言是( )。 A.面向问题的解释型高级编程语言 B.面向机器的低级编程语言 C.面向过程的编译型高级编程语言 D.面向对象的解释型高级编程语言 11. 下列的变量定义中,错误的是( )。 A) int i; B) int i=Integer.MAX_VALUE; C) static int i=100; D) int 123_$; 12. 以下的变量定义语句中,合法的是( )。 A) float $_*5= 3.4F; B) byte b1= 15678; C) double a =Double. MAX_VALUE; D) int _abc_ = 3721L; 13. 以下字符常量中不合法的是( )。 A) '|' B) '\'' C) "\n" D) '我' 14. 若以下变量均已正确定义并赋值,下面符合Java语言语法的语句是( )。 A) b = a!=7 ; B) a = 7 + b + c=9; C) i=12.3* % 4; D) a = a + 7 = c + b;

Java程序设计试卷及答案

Java程序语言试卷(A) 答题卡: 一题: 1.___________________________________________________________ 2.___________________________________________________________ 3.___________________________________________________________ 4.___________________________________________________________ 5.___________________________________________________________ 6.___________________________________________________________ 四题: 1.___________________________________________________________ 2.___________________________________________________________ 3.___________________________________________________________ 4.___________________________________________________________ 5.___________________________________________________________五题:

Java程序设计预赛模拟题-2

一、单选题 1.Java JDK中调试器的命令是( )。 A. javac B. java C. jdb D. javah 2.运行jar文件中class文件需要在java命令后面加的参数为()。 A. -cp B. -g C. -d D. -verbose 3.下面哪项在java中是不合法的标识符?() A. $user B. point C. You&me D. _endline 4.下列哪一项不是Java保留字?() A. sizeof B. super C. abstract D. break 5.下列哪个布局管理器中的按钮位置有可能会根据Frame的大小改变而改变? () A. BorderLayout B. CardLayout C. GridLayout D. FlowLayout 6.下面哪些java语句会导致无限循环?( ) I. while (true) i = 0; II. while (false) i = 1; III. while (!false) i = 0; A. III only B. I and III only C. I only D. I, II and III 7.下面是Example.java文件的完整代码,请找出会产生编译错误的行()。 1) class BaseClass { 2) public String str; 3) public BaseClass(){ 4) System.out.println(“ok”);} 5) public BaseClass(String s){ 6) str=s;}} 7) class SubClass extends BaseClass{ 8) } 9) public class Example{ 10) public void method(){ 11) SubClass s=new SubClass(“hello”); 12) BaseClass b=new BaseClass(“world”); 13) } 14) } A. 7 B. 10 C. 11 D.12 8.可以在下面代码段point x处写入的是()。 //point x public class Interesting{ //do something } A. String str; B. static int PI=3.14; C. public class MyClass{//do other thing…} D. import java.awt.*; 9.下面关于事件监听的说明,哪一个语句是正确的?() A. 所有组件,都不允许附加多个监听器 B. 如果多个监听器加在一个组件上,那么事件只会触发一个监听器 C. 组件不允许附加多个监听器

Java程序设计课程作业

Java程序设计课程作业 第一章绪论 1、安装Java SDK到你的电脑中。 2、选择安装一种Java开发工具到你的电脑中。Jcreater、NetBeans、Eclipse 3、编译并运行一个“Hello World”Java程序。 程序代码: // public class App2_1 { public static void main(String[]args) { System.out.println("hello Word"); } } 4、编译并运行一个Java Applet程序。 答:编译成功,不过浏览器不显示自己的Applet程序,还在学习中,错误的原因是自己电脑上java的安全设置的原因,修改后运行成功。 第二章Java语法基础 1、下列表达式是否有错?若有错,请说明何处出现何种错误;若无错,请给出其值。 (1) 3+4<<2^-8 没有错误,运行结果为-28 (2) 36>>2*4&48<<8/4+2 运行结果为0

有错误,||这个运算规律是两边均为boolean型 (4) 2*4&&0<2||4%2 有错误,||这个运算规律是两边均为boolean型 2、任意准备一份学生成绩表,其中包括至少3门课程、每门课程至少10名同学的成绩。请编写程序完成以下功能:(1) 统计并输出各门课程的平均成绩。(2) 输出等级表:优、良、中、及格及不及格。 import java.util.*; class student{ String num; doublemath; doubleenglish; doublechinese; } publicclass Test{ publicstaticvoid main(String[]agrs){ student stu[]=new student[11]; for(int i=0;i<10;i++) stu[i]=new student(); Scanner reader=new Scanner(System.in); System.out.println("请依次输入十个同学的数学,英语。语文的成绩:"); for(int i=0;i<=10;i++){ System.out.println("第"+(i+1)+"同学的数学,英语。语文的成绩:"); stu[i].math=reader.nextInt(); stu[i].english=reader.nextInt(); stu[i].chinese=reader.nextInt(); } double sum=0; for(int i=0;i<10;i++) sum=sum+stu[i].math; float A=(float)sum/10; System.out.println("数学平均成绩:"+A); //int sum;

大学《java程序设计》考试题库及答案

若有定义int a=2,b=2; 则表达式(a++)+(++b) 的值是( )。 A. 5 监听器接口的方法返回值的类型是()。C. void 在浏览器中执行applet 程序,以下选项中的哪个方法将被最先执行()。 D. init() 以下哪个不是Java的原始数据类型() B. Boolean 向Applet传递参数的正确描述是()。C. C. PARAM name="age,value=20" 阅读下列代码; public class Test{ String s="One World One Dream"; public static void main(String args[]){ System.out.println(s); } } 其运行结果是_ C. 编译时出错//除非创建Text类的对象 如果容器组件p的布局是BorderLayout,则在p的下边中添加一个按钮b,应该使用的语句是()。 A. p.add(b,"South"); 编译和运行下面的应用程序,并在命令行界面输入12345 ,则回车后屏幕输出的结果是( )。public class A { public static void main(String args[]) throws IOException{ BufferedReader buf=new BufferedReader( new I nputStreamReader(System.in)); String str=buf.readLine(); int x=Integ er.parseInt(str); System.out.println(x/100); } } B. 123 构造函数何时被调用?() B. 创建对象时 以下哪项可能包含菜单条()。 D. Frame

Java程序设计期末考试题

Java程序设计期末考试题 一、选择题 下列说法中,不正确的是( A ) A) 一个java源程序编译通过后,得到的结果文件数也只有一个。 B) 一个java源程序经过编译后,得到的文件的扩展名一定是.class。 C) 一个java源程序只能有一个public class类定义,且源文件的名字与public class的类名相同,扩展名必须是.java。 D) 一个java源程序可以包含多个class类。 请问,以下哪些描述是正确的? 请选择所有正确答案: (1)如果package语句存在,则必须出现在源文件的非空白首行。(2)如果import语句存在,则必须出现在源文件的非空白首行。(3)如果main()方法存在,则必须出现在源文件的非空白首行。(4)如果在源文件中声明了一个public接口,则其名称必须和源文件名一致。 请问,以下哪些是Java中的合法标识符? 请选择所有正确答案: (1)my-id (2)my_id

(3)101ids (4)id101 请问,以下哪些是合法的标识符? 请选择所有正确答案: (1)%abcd (2)$abcd (3)1abcd (4)package (5)_a_long_name 以下哪个不是Java的关键字?() A、FALSE B、const C、this D、void 以下哪个不是Java的关键字?() A、TRUE B、goto C、this D、void Java的字符类型采用的是Unicode编码方案,每个Unicode码占用()个比特位。 A、8 B、16

C、32 D、64 请问一下哪些修饰符用于声明一个常量?请选择一个正确答案:static final abstract public 给出以下代码,该程序的运行结果是什么? public class Example{ final int x=0; Example(){ x=1; } final int aMethod(){ return x; } } 请选择所有正确答案: 代码编译错误,因为非final类中存在final方法。 代码编译成功。

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