华联学院《Java语言程序设计》理论与上机复习题及部分答案_第1页
华联学院《Java语言程序设计》理论与上机复习题及部分答案_第2页
华联学院《Java语言程序设计》理论与上机复习题及部分答案_第3页
华联学院《Java语言程序设计》理论与上机复习题及部分答案_第4页
华联学院《Java语言程序设计》理论与上机复习题及部分答案_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

《Java语言程序设计》理论与上机复习题及部分答案

第1章Java语言基础

一.概念复习和巩固(请在课后和上机前完成下面的练习)

1.下面说法正确的是(C)。

A)Java程序的源文件名称与主类(公共类)的名称相同,后缀可以是java或txt等。

B)JDK的编译命令是java。

C)一个java源程序编译后可能产生几个字节码文件。

D)在命令行运行编译好的字节码文件,只需在命令行直接键入程序名即可运行该程序。

2.下面的说法正确的是(ABCD)。

A)Java语言是面向对象的、解释执行的网络编程语言。

B)Java语言具有可移植性,是与平台无关的编程语言。

C)Java语言可对内存垃圾自动收集。

D)Java语言编写的程序虽然是“一次编译,到处运行”,但必须要java的运行环境。

3.下面main()方法的定义哪些是正确的(ACD)?

A)publicstaticvoidmain(Stringargs[]){}

B)publicstaticvoidmain(String[]){}

C)publicstaticvoidmain(String[]args){}

D)publicstaticvoidmain(String[]x){}

4.用于定义数据简单类型的一组关键字是(B)。

A)class,float,main,public

B)float,boolean,int,long

C)char,extends,float,double

D)int,long,float,import

5.以下的变量定义中,合法的语句是(B)。

A)float1_variable=3.4;B)intabc_=21;

C)doublea=1+4e2.5;D)shortdo=15;

6.定义变量如下:

inti=18;

longL=5;

floatf=9.8f;

doubled=1.2;

Strings="123";

以下赋值语句正确的是(ABD)。

A)s=s+i;B)f=L+i;C)L=f+i;D)s=s+i+f+d;

7.以下语句输出的结果是(B)

Stringstr="123";

intx=4,y=5;

str=str+(x+y);

System.out.println(str);

A)1239B)12345C)会产生编译错误D)123+4+5

8.以下语句中没有编译错误或警告提示信息的是(B)?

A)byteb=256;B)doubled=89L;C)charc="a";D)shorts=8.6f;

9.下面的程序输出结果是:1+2=3,请将程序补充完整。

publicclassApp2{

publicstaticvoidmain(Stringargs[]) {

intx=1,y=2;

System.out.println(______________);

}

}

答案:x+"+"+y+"="+(x+y)

10.阅读下面的程序,回答问题。

程序如下:

publicclassApp1{

publicstaticvoidmain(Stringargs[]){

charch='\n';

System.out.print("Thefirstsnowcame,"+ch+"Howbeautifulitwas!");

}

}

(1)这是哪一类java程序?

(2)写出保存该文件的文件名及后缀名?

(3)在JDK下编译该文件的命令是什么?编译后形成什么文件?

(4)在JDK下如何运行该程序?程序运行后输出的结果如何?

10.答案:

(1)Java应用程序(JavaApplication);

(2)App1.java;

(3)在命令行用javacApp1.java编译该程序。

编译后形成App1.class的字节码文件;

(4)在命令行键入javaApp1即可运行该程序。

编程序运行后输出的结果为:

Thefirstsnowcame,

Howbeautifulitwas!

11.阅读下面的程序,回答问题。

importjava.applet.Applet;

importjava.awt.Graphics;

publicclassApplet1extendsApplet{

publicvoidpaint(Graphicsg){

g.drawString("Welcome",25,30);

g.drawString("to",85,30);

g.drawString("Java",25,50);

g.drawString("Programming!",55,50);

}

}

(1)这是哪一类java程序?

(2)写出保存该文件的文件名及后缀名?

(3)在JDK下编译该文件的命令是什么?编译后形成什么文件?

(4)该程序能直接运行吗?写出嵌入该程序的字节码文件的html文件,该html文件可以任意命名吗?

(5)程序运行后输出几行?写出输出结果。

11.答案:

(1)Java小程序(JavaApplet)。

(2)Applet1.java

(3)在命令行用javacApplet1.java编译该程序。编译后形成Applet1.class的字节码文件。

(4)不能,为了能使程序运行,还需编写html文件,用<applet></applet>标记符将编译形成的字节码文件嵌入到html文件中,然后通过浏览器运行JavaApplet。或在命令行通过命令appletviewer运行html文件。嵌入该程序的字节码文件的html文件如下,该html文件可以任意命名(如命名为mypage.htm)

mypage.htm文件如下:

<HTML>

<HEAD><TITLE>我的网页</TITLE></HEAD>

<BODY>

<APPLET code=Applet1.classwidth=300height=200></APPLET>

</BODY>

</HTML>

(5)程序运行后输出2行;输出结果如下:

二.本章上机实验

上机实验一

1.编写Java应用程序,定义byte、int、long、float、double、char和boolean等类型的数据并用一个输出语句输出,要求每行输出一个数据。

2.编写Java小应用程序,输出两行字符串:“Java很有趣。”和“努力学习Java编程。”,输出的起点坐标是(20,20),行距是50像素。

3.使用算术运算符得到一个4位十进制数的各位数字并输出,然后输出该数的逆序数和各位数字平方后相加的和。

4.编写Java小应用程序,用三目条件运算符求程序中给定的4个double数的最大值和最小值并输出结果。

5.编写Java应用程序,分别利用while循环、do…while循环和for循环求100~200的自然数的和。

6.编写Java小应用程序,选择合适的数据类型,利用循环求2的40次方的结果并输出。

上机实验二

1.编写Java应用程序,把100~1000的自然数中能够被3整除的数输出到屏幕上。

2.编写Java小应用程序,程序中自定义一个方法:

doublefind2(intn)

方法的功能是求2的n次方。程序中调用该方法,输出2的40次方的结果并输出。

3.编写Java应用程序,参照例1.15自定义类Car,类中有3个变量:字符串name,表示汽车的品牌;字符串color,表示汽车的颜色;double型变量weight,表示汽车的自重;int型变量passenger,表示汽车能搭乘的人数。类中还定义一个构造方法,用来初始化上面的4个变量。在应用程序中创建类Car的1个对象(品牌:“本田”;颜色:“黑色”;自重:1500公斤;搭乘的人数:5人),并显示其信息。

4.编写Java小应用程序,其中定义一个int数组(数组元素任意指定),求数组元素的和、数组元素的最大值和最小值并输出所求的结果。

5.编写Java应用程序,从命令行传入多个字符串到程序中,并将他们分行输出在屏幕上。

本章上机拓展练习

1.查阅Java API帮助文档,上机调试下面的程序,使之编译通过并能正确运行。

publicclassArithmetic{

importjavax.swing.JOptionPane;

publicstaticvoidmain(Stringargs[])

{

StringfirstNumber,secondNumber,thirdNumber;

intnum2,num3,sum,product,average;

firstNumber==JoptionPane.showInputDialog("Enterfirstinteger:")

secondNumber==JOptionPane.showInputDialog("Entersecondinteger:")

thirdNumber==JOptionPane.showInputDialog("Enterthirdinteger:)

num1==Integer.parseInt(firstNumber);

num2==Integer.parseInt(secondNumber);

num3==Integer.parseInt(thirdNumber);

sum=num1+num2+num3;

product=num1*num2*num3;

average=(num1+num2+num3)/3;

JOptionPaneshowMessageDialog(null,"Thesumis"+sum+

"\nTheproductis"+product+"\nTheaverageis"+average,

"Results",JOptionPane.PLAIN_MESSAGE);

}

}//endclassArithmetic

2.查阅Java API帮助文档,根据/**/中的注释将下面的程序补充完整,使之编译通过并能正确运行。

importjavax.swing.JOptionPane;

publicclassCalculate2{

publicstaticvoidmain(Stringargs[])

{

StringfirstNumber;//firststringenteredbyuser

StringsecondNumber;//secondstringenteredbyuser

StringthirdNumber;//thirdstringenteredbyuser

intnumber1;//firstnumber

intnumber2;//secondnumber

intnumber3;//thirdnumber

intaverage;//averageofthenumbers

intlargest;//largestnumber

intproduct;//productofthenumbers

intsmallest;//smallestnumber

intsum;//sumofthenumbers

/*writeaseriesofstatementstoreadinthreenumbers,convertthem

tointegers,andassignthemtonumber1,number2,andnumber3*/

//initializelargestandsmallest

largest=number1;

smallest=number2;

//determinesmallestandlargest

/*writecodeherethatcomparesallthreeintegersandsetsthe

largestandsmallestaccordingly*/

//performcalculations

sum=number1+number2+number3;

/*writestatementstocalculatetheproductandtheaverage*/

//createresultstring

Stringresult;

/*Writeastatementthatconcatenatesalltheresultsintoasinglestring

"result"thatisdisplayed*/

//displayresults

JOptionPane.showMessageDialog(null,result,"CalculationResults",

JOptionPane.INFORMATION_MESSAGE);

System.exit(0);

}

}//endclassCalculate2

3.打印1~10的整数的立方和平方

importjava.awt.*;

importjavax.swing.*;

publicclassNumbersextendsJApplet{

//drawcalculatedsquaresandcubicstable

publicvoidpaint(Graphicsg)

{

//drawatitlerow

g.drawString("number",5,15);

g.drawString("Square",70,15);

g.drawString("Cube",145,15);

intx;

x=0;

/*writethreestatementsthatdrawarowcontainingthevaluesof

x,xsquaredandxcubed*/

/*setxto1*/

/*writethreestatementsthatdrawarowcontainingthevaluesof

x,xsquaredandxcubed*/

/*repeatthisalgorithmforvaluesfrom2through10*/

}//endmethodpaint

}//endclassNumbers

第2章使用Java解决简单的问题

一.概念复习和巩固(请在课后和上机前完成下面的练习)

1.以下选项中变量均已正确定义,错误的赋值语句是(D)。

A)i--;B)i+=7;

C)k+=x+2;D)y+x=z;

2.若以下变量均已正确定义并赋值,下面符合Java语言语法的表达式是(B)。

A)a=a≤7B)a=7+b+c

C)int12.3%4D)a=a+7=c+b

3.定义整型变量:intn=456;,表达式的值为5的是(AB)。

A)n/10%10B)(n-n/100*100)/10

C)n%10D)n/10

4.对下面的语句序列正确的说法是(B)。

intc='A'/3;

c+='1'%5;

System.out.println(c);

A)产生编译错误;B)输出结果25;

C)输出结果21;D)输出结果2;

5.设a,f,x,y,z均为int型的变量,并已赋值,下列表达式的结果属于非逻辑值的是(D)。

A)x>y&&f<aB)-z<x-y

C)y!=++xD)y+x*x++

6.执行下列程序段后,b,x,y的值正确的是(C)。

intx=6,y=8;

booleanb;

b=x<y|++x==--y;

A)true,6,8B)false,7,7

C)true,7,7D)false,6,8

7.下面的程序段输出的变量b的值是(B)。

inta=0xFFFFFFFE;

intb=~a;

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

A)0xFFFFFFFEB)1C)14D)-2

8.若a和b均是整型变量并已正确赋值,正确的switch语句是(D)。

A)switch(a+b);B)switch(a+b*3.0)

{……}{……}

C)switchaD)switch(a%b)

{……}{……}

9.以下由do-while语句构成的循环执行的次数是(D)。

A)无限次B)有语法错,不能执行

C)一次也不执行D)执行1次

intk=0;

do{++k;}while(k<1);

10.执行完下面的程序段后,k的值是(B)。

intk=0;

label:for(inti=1;i<10;i++)

{

for(intj=1;j<5;j++)

{

k+=i+j;

if(j==3)

breaklabel;

}

}

A)3B)9C)12D)6

11.下列方法x的定义中,正确的是(A)。

A)intx(){charch='a';return(int)ch;}B)voidx{...}

C)intx(inti){return(double)(i+10);}D)x(inta){returna;}

12.下列方法定义中,方法头不正确的是(D)。

A)publicintx(){...}B)publicstaticintx(doubley){...}

C)voidx(doubled)D)publicstaticx(doublea){...}

13.为了区分重载多态中同名的不同方法,要求(A)。

A)采用不同的形式参数列表B)返回值类型不同

C)参数名不同D)选项A、B、C都对

14.在某个类中定义一个方法:voidGetSort(intx),以下能作为这个方法的重载的是(ABCD)。

A.voidGetSort(floatx){x*=x;}

B.intGetSort(doubley){return(int)(2*y);}

C.doubleGetSort(intx,inty){returnx+y;}

D.voidGetSort(intx,inty){x=x+y;y=x-y}

15.若已定义:inta[]={0,1,2,3,4,5,6,7,8,9};

则对a数组元素正确的引用是(B)。

A)a[-3]B)a[9]C)a[10]D)a(0)

16.下面是在命令行运行Java应用程序A,怎样才能在main(Stringargs[])方法中访问单词"first"(BD)?

javaAthefirstsnow,thefirstsnowcame.

A)args[0]B)args[1]C)args[2]D)args[5]

二.本章上机实验

上机实验三

1.编写Java小程序,定义一个整数1255,把它的2进制、16进制的表示在屏幕输出。

2.编写应用程序,在main方法在中定义字符串“1.235678e2”、“87.8f”和“128”,将他们分别转化为对应的double数、float数和int数并输出,最后输出这三个数的和(要求结果保留到小数点后两位)。

3.编写Java应用程序,求40的阶乘(要求输出结果的每一位)。

4.编写Java小程序,打印九九乘法表。

5.编写Java小程序,求当n=100时菲波那契(Fibonacci)数列的的比值。

6.编写Java应用程序求1!+2!+...+20!的和并显示,要求用方法实现求阶乘。

上机实验四

1.一个三位数,满足数字算式:,其中*代表数字,使用一层循环,求满足条件的三位数。

2.编写Java应用程序,实现以下功能:当应用程序运行后,根据屏幕提示进行交互式输入并菲波那契(Fibonacci)数列的任意项。

3.应用程序中定义方法头如下所示的方法:

staticint[]add(int[]x,int[]y)

staticint[]multi(int[]x,int[]y)

add方法的功能是:把参数数组x和y(其元素个数相同)的每个元素相加,并作为返回数组的元素;multi方法的功能是:把参数数组x和y(其元素个数相同)的每个元素相乘,并作为返回数组的元素。在Java应用程序中使用这两个方法。

4.重载3个不同版本的max方法和min方法,这些方法均有4个参数,分别用来求4个int、4个long、4个float数的最大值和最小值。编写Java应用程序,使用这些方法。

5.编写Java应用程序,程序运行后,根据屏幕提示输入一个数字字符串,回车后统计有多少个偶数数字和奇数数字。

6.编写应用程序,定义一个5行3列的二维数组,给数组的每个元素赋10~100之间的随机值,显示二维数组每行的元素,并输出所有元素的和。

本章上机拓展练习

1.查阅Java API帮助文档,上机调试下面的程序,使之编译通过并能正确运行。

importjavax.swing.JOptionPane;

publicclassTemperature{

publicstaticvoidmain(Stringargs[])

{

intoption;

intdegree1;

intcelsius1;

intfahrenheit1;

Stringresult;

Stringdegree;

Stringfahrenheit;

Stringinput;

Stringcelsius;

option=0;

While(option!=3)

input=JOptionPane.showInputDialog(

"1forFahrenheittoCelsius\n"+

"2forCelsiustoFahrenheit\n3toquit:");

option=Double.parseDouble(input);

degree=

JOptionPane.showInputDialog("EnterthrdegreeinFahrenheit:");

degree1=Double.parseDouble(degree);

celsius1=(degree1-32)*5/9;

result="ThetempinCelsiusis"+celsius1;

JOptionPane.showMessageDialog(null,result,"Result",

JOptionPane.INFORMATION_MESSAGE);

if(option==2);

degree=JOptionPane.showInputDialog("EnterdegreeinCelsius:");

degree1=Double.parseDouble(degree);

fahrenheit1=(degree1*9/5)+32;

result="ThetempinFahrenheitis"+fahrenheit1;

JOptionPane.showMessageDialog(null,result,"Result",

JOptionPane.INFORMATION_MESSAGE);

System.exit(0);

}//endwhileloop

}//endmethodMain

}//endclassTemperature

2.判断一个数是否是回文数。根据/**/中的注释将下面的程序补充完整,使之编译通过并能正确运行。

importjava.awt.*;

importjavax.swing.JOptionPane;

publicclassPalindrome{

//mainmethodbeginsexecutionofJavaapplication

publicstaticvoidmain(Stringargs[])

{

StringresultString;//resultString

intnumber;//userinputnumber

intoriginalNumber;//storesoriginalvalueinnumberforoutput

intdigit1;//firstdigit

intdigit2;//seconddigit

intdigit4;//fourthdigit

intdigit5;//fifthdigit

intdigits;//numberofdigitsininput

number=0;

digits=0;

/*Writecodethatinputsafive-digitnumber.Displayanerrormessage

ifthenumberisnotfivedigits.Loopuntilavalidinputisreceived.*/

/*Writecodethatseparatesthedigitsinthefivedigitnumber.Use

divisiontoisolatetheleft-mostdigitinthenumber,usearemainder

calculationtoremovethatdigitfromthenumber.Thenrepeatthis

process.StoretheoriginalvalueofnumberinvariableoriginalNumber

beforeperformingcalculations.*/

/*Writecodethatdetermineswhetherthefirstandlastdigitsare

identicalandthesecondandfourthdigitsareidentical.Assign

resultStringastringindicatingwhetherornottheoriginalstring

isapalindrome.*/

/*Displaywhetherornotthegivennumberisapalindrome.*/

System.exit(0);

}//endmethodmain

}//endclassPalindrome

3.下面的程序PartA和PartB分别用来加密和解密一个四位数。根据/**/中的注释将下面的程序补充完整,使之编译通过并能正确运行。

===================================

PartA:Programencryptsafour-digitnumber.

===================================

importjava.awt.*;

importjavax.swing.JOptionPane;

publicclassEncrypt{

//mainmethodbeginsexecutionofJavaapplication

publicstaticvoidmain(Stringargs[])

{

intnumber;//originalnumber

intdigit1;//firstdigit

intdigit2;//seconddigit

intdigit3;//thirddigit

intdigit4;//fourthdigit

intencryptedNumber;//encryptednumber

//enterfourdigitnumbertobeencrypted

StringinputNumber=

JOptionPane.showInputDialog("Enterafourdigitnumber:");

number=Integer.parseInt(inputNumber);

//encrypt

/*Writecodeherethatwillencrypteverydigitofthe4-digitnumber*/

/*Writecodeherethatswapsthedigitstoproducetheencryptednumber*/

/*Writecodeheretodisplaytheencryptednumberinamessagedialog*/

System.exit(0);

}//endmethodmain

}//endclassEncrypt

===================================

PartB:Programdecryptsafour-digitnumber.

===================================

importjava.awt.*;

importjavax.swing.JOptionPane;

publicclassDecrypt{

//methodmainbeginsexecutionofJavaapplication

publicstaticvoidmain(Stringargs[])

{

intnumber;//encryptednumber

intdigit1;//firstdigit

intdigit2;//seconddigit

intdigit3;//thirddigit

intdigit4;//fourthdigit

intdecryptedNumber;//decryptednumber

//enterfourdigitnumbertobedecrypted

number=Integer.parseInt(JOptionPane.showInputDialog(

"Enterafourdigitnumber:"));

//decrypt

/*Writecodeherethatobtainstheindividualdigitsofthe

four-digitnumberanddecryptthem*/

/*Writecodeherethatassemblesthedecrypteddigits

intothedecryptednumber*/

/*Writecodeheretodisplaythedecryptednumberinamessagedialog*/

System.exit(0);

}//endmethodmain

}//endclassdecrypt

4.下面的程序用来根据输入的产品号和数量计算销售额,请根据/**/中的注释将下面的程序补充完整,使之编译通过并能正确运行。

importjava.awt.*;

importjava.text.NumberFormat;

importjava.util.Locale;

importjavax.swing.*;

publicclassSales{

publicstaticvoidmain(Stringargs[])

{

doubleproduct1=0,product2=0,product3=0,product4=0,product5=0;

StringinputString;

intproductId=1;

/*Asktheusertoenterproductnumber*/

/*Createwhilestatementthatloopsuntilsentinelisentered*/{

/*Determinewhetheruser抯productnumberisin1-5*/{

/*Ifso,askusertoinputthequantitysold*/

/*Writeaswitchstructureherethatwillcomputethetotal

forthatproduct*/

}

else{

/*Displayerrormessageforinvalidproductnumber*/

}

/*Asktheusertoenterproductnumber*/

}//endwhile

//createdecimalformattoformatfloatingpointnumbers

//withtwodigitstotherightofthedecimalpoint

NumberFormatmoneyFormat=NumberFormat.getCurrencyInstance(Locale.US);

//createasummarymessage

Stringoutput="Product1:"+money.format(product1);

/*writecodeherefortherestofthesummarymessageitshouldcontain

thetotalsfortherestoftheproducts,eachonit抯ownline*/

JTextAreaoutputArea=newJTextArea(6,20);

outputarea.setText(output);

//showresults

JOptionPane.showMessageDialog(null,outputArea,"Totals",

JOptionPane.INFORMATION_MESSAGE);

System.exit(0);

}

}//endclassSales

第3章类、类的继承和接口

一.概念复习和巩固(请在课后和上机前完成下面的练习)

1.面向对象程序设计的基本特征是(ABCD)。

A)抽象B)封装C)继承D)多态

2.下面关于类的说法正确的是(ABCD)。

A)类是Java语言中的一种复合数据类型。B)类中包含数据变量和方法。

C)类是对所有具有一定共性的对象的抽象。D)Java语言的类只支持单继承。

3.下列选项中,用于在定义类头时声明父类名的关键字是(D)。

A)packageB)interfaceC)classD)extends

4.定义类头时可以使用的访问控制符是(CD)。

A)privateB)protected

C)publicD)缺省的,即没有访问控制修饰符

5.有一个类A,对于其构造函数的声明正确的是(B)。

A)voidA(intx){...} B)A(intx){...}

C)AA(intx){...} D)intA(intx){...}

6.设X为已定义的类名,下列声明对象x1的语句中正确的是(ABD)。

A)staticXx1;B)privateXx1=newX();

C)abstractXx1;D)finalXx1=newX();

7.设类B是类C的父类,下列声明对象x1的语句中不正确的是(D)。

A)Bx1=newB();B)Bx1=newC();

C)Cx1=newC();D)Cx1=newB();

8.编译运行下面的程序,结果是(A)。

publicclassA{

publicstaticvoidmain(String[]args){

Bb=newB();

this.test();

}

publicvoidtest(){

System.out.print("A");

}

}

classBextendsA{

voidtest(){

super.test();

System.out.println("B");

}

}

A)产生编译错误,因为类B覆盖类A的方法test()时,降低了其访问控制的级别。

B)代码可以编译运行,并输出结果:AB。

C)代码可以编译运行,但没有输出。

D)代码可以编译运行,并输出结果:A。

9.下面的程序编译运行的结果是(A)。

publicclassAimplementsB{

publicstaticvoidmain(String[]args){

intm,n;

At=newA();

m=t.k;

n=B.k;

System.out.println(m+","+n);

}

}

interfaceB{intk=5;}

A)5,5B)0,5C)0,0D)编译程序产生编译错误

10.为了使包abc中的所有类在当前程序中可见,可以使用的语句是(A)。

A)importabc.*;B)packageabc.*;

C)importabc;D)packageabc;

二.本章上机实验

上机实验五

1.定义一个名为MyRectangle的矩形类,类中有4个私有的整型域,分别是矩形的左上角坐标(xUp,yUp)和右下角坐标(xDown,yDown);类中定义没有参数的构造方法和有4个int参数的构造方法,用来初始化类对象。类中还有以下方法:getW()——计算矩形的宽度;getH()——计算矩形的高度;area()——计算矩形的面积;toString()——把矩形的宽、高和面积等信息作为为字符串返回。编写应用程序使用MyRectangle类。

2.设计一个Dog类,它有名字、颜色、年龄等属性,定义构造方法用来初始化类的这些属性,定义方法输出Dog的信息。编写应用程序使用Dog类。

3.设计一个长方体类MyCube,该类包含第1题中的MyRectangle类对象作为类的域,表示长方体的底面;此外还包含一个整型变量d,表示长方体的高。类中定义构造方法初始化类对象、定义求体积和表面积的方法。编写应用程序测试MyCube类。

4.设计一个表示用户的User类,类中的变量有用户名、口令(私有的)和记录用户个数的变量(静态的),定义类的3个构造方法(没有参数、有一个参数给用户名赋值、有两个参数给用户名和口令赋值)、获取和设置口令的方法、返回字符串表示的类信息的方法(包括用户名、口令)。编写应用程序测试User类。

上机实验六

1.定义一个抽象基类Shape,它包含一个抽象方法getArea(),从Shape类派生出Rectangle和Circle类,这两个类都用getArea()方法计算对象的面积。编写编写应用程序使用Rectangle类和Circle类。

2.定义一个接口ClassName,接口中只有一个抽象方法getClassName()。设计一个类Horse,该类实现接口ClassName中的方法getClassName(),功能是获取该类的类名。编写应用程序使用Horse类。

3.定义接口myItfc,接口中只有一个名为area的方法,该方法有一个double类型参数,返回类型也为double。编写一个应用程序,并实现接口myItfc,接口中area方法的实现是返回参数的立方值;在应用程序中调用该方法并输出其结果。

4.编写小程序,在小程序窗口中显示字符串“java程序设计”,按下键盘上的箭头键,可按照箭头方向移动(提示:得到键盘键代码的方法是e.getKeyCode(),上、下、左、右键的编码分别用常量VK_UP、VK_DOWN、VK_LEFT、VK_RIGHT表示)。

本章上机拓展练习

1.调式下面的程序,使之能编译通过并正确运行。

//Test.java

importjavax.swing.JOptionPane;

publicclassTest{

publicstaticvoidmain(Stringargs[])

{

StringfirstName=JOptionPane.showInputDialog("EnteryourFirstname");

StringlastName=JOptionPane.showInputDialog("EnteryourLastname");

Stringcolor2=JOptionPane.showInputDialog("Whatcolorisyourcar?");

Stringmiles=JOptionPane.showInputDialog("howmanymileshaveyou"+

"driveninyourcar?");

doublemiles2=Double.parseDouble(miles);

Milesmile=newMiles();

Colorcolor=newColor();

Personperson=newPerson(firstName,lastName);

mile.setMile(miles2);

color.setColor(color2);

Stringoutput=person.getFirstName()+""+person.getLastName()+

"drovehis/her"+color.toString()+"car"+

"for"+mile.toUniversalString()+"Miles";

JOptionPane.showMessageDialog(null,output,"TestingclassRace",

JOptionPane.INFORMATION_MESSAGE);

System.exit(0);

}

}

//Person..java

publicclassPersonextendsObject{

privateStringfirstName;

privateStringlastName;

publicPerson(StringfirstName,StringlastName)

{

lastName=getLastname();

firstName=getFirstName();

}

publicStringgetFirstName()

{

returnfirstName;

}

publicStringgetLastName()

{

returnlastName;

}

}

//Miles.java

importjava.text.DecimalFormat;

publicclassMilesextendsObject{

privatefinaldoublemiles;

publicMiles()

{

setMile(0.0);

}

publicvoidsetMile(doublem)

{

miles=((m>=0.0&&m<=200000)?m:0);

}

publicStringtoMilesString()

{

DecimalFormatformatMile=newDecimalFormat("0");

returnformatMile.format(miles);

}

}

//Color.java

publicclassColorextendsObject{

privateStringcolor;

publicColor()

{

returnsetColor("");

}

publicvoidsetColor()

{

color="black";

returncolor;

}

publicvoidsetColor(Stringm)

{

color=m;

returncolor;

}

publicStringtoColorString()

{

returncolor;

}

}

2.下面的程序Complex.java定义一个复数类,ComplexTest.java测试该复数类。根据/**/中的注释将下面的程序补充完整,使之编译通过并能正确运行。

============================

//ComplexTest.java

//TesttheComplexnumberclass

============================

importjavax.swing.*;

publicclassComplexTest{

publicstaticvoidmain(Stringargs[])

{

Complexa,b;

a=newComplex(9.9,7.7);

b=newComplex(1.4,3.1);

Stringresult="a="+a.toComplexString();

result+="\nb="+b.toComplexString();

result+="\na+b="+a.add(b).toComplexString();

result+="\na-b="+a.subtract(b).toComplexString();

JOptionPane.showMessageDialog(null,result,"ComplexTest",

JOptionPane.INFORMATION_MESSAGE);

System.exit(0);

}

}

=========================

//Complex.java

//DefinitionofclassComplex

=========================

publicclassComplex{

privatedoublereal;

privatedoubleimaginary;

//Initializebothpartsto0

/*Writeheaderforano-argumentconstructor.*/

{

/*WritecodeherethatcallstheComplexconstructorthattakes2

argumentsandinitializesbothpartsto0*/

}

//Initializerealparttorandimaginaryparttoi

/*Writeheaderforconstructorthattakestwoarguments梤ealpartrand

imaginaryparti.*/

{

/*Writelineofcodethatsetsrealparttor.*/

/*Writelineofcodethatsetsimaginaryparttoi.*/

}

//AddtwoComplexnumbers

publicComplexadd(Complexright)

{

/*WritecodeherethatreturnsaComplexnumberinwhichtherealpartis

thesumoftherealpartofthisComplexobjectandtherealpartofthe

Complexobjectpassedtothemethod;andtheimaginarypartisthesum

oftheimaginarypartofthisComplexobjectandtheimaginarypartof

theComplexobjectpassedtothemethod.*/

}

//SubtracttwoComplexnumbers

publicComplexsubtract(Complexright)

{

/*WritecodeherethatreturnsaComplexnumberinwhichtherealpartis

thedifferencebetweentherealpartofthisComplexobjectandthereal

partoftheComplexobjectpassedtothemethod;andtheimaginarypart

isthedifferencebetweentheimaginarypartofthisComplexobjectand

theimaginarypartoftheComplexobjectpassedtothemethod.*/

}

//ReturnStringrepresentationofaComplexnumber

publicStringtoComplexString()

{

return"("+real+","+imaginary+")";

}

}//endclassComplex

3.下面的程序定义了父类Employee和它的三个子类:CommissionEmployee类、HourlyEmployee类、SalariedEmployee类都继承自Employee类。根据/**/中的注释将下面的程序补充完整,使之编译通过并能正确运行。

============================

//EmployeeTest.java

//Employeehierarchytestprogram.

=============================

importjava.text.DecimalFormat;

importjavax.swing.JOptionPane;

publicclassEmployeeTest{

publicstaticvoidmain(String[]args)

{

DecimalFormattwoDigits=newDecimalFormat("0.00");

//Createemployees

/*CreateSalariedEmployeeJohnSmithwithsocialsecuritynumber

111-11-1111andweeklysalary$800.00.*/

/*CreateSalariedEmployeeSueJoneswithsocialsecuritynumber

222-22-2222withgrosssalesof$10000andacommissionrateof.06.*/

/*CreateSalariedEmployeeKarenPricewithsocialsecuritynumber

444-44-4444anhourlysalaryof$16.75and40hoursworked.*/

//outputeachemployee

/*CreateaStringcalledoutputandassignittheStringrepresentation

ofthethreeemployeeobjectsseparatedbynewlines.*/

JOptionPane.showMessageDialog(null,output);//displayoutput

System.exit(0);

}//endmain

}//endclassEmployeeTest

=====================

//Employee.java

//Employeesuperclass.

=====================

publicclassEmployee{

/*Declareinstancevariablesforthefirstname,

lastnameandsocialsecuritynumber.*/

//constructor

/*Declareaconstructorwiththreeparametersthatareusedto

initializethefirstname,lastnameandsocialsecuritynumber.*/

//setmethods

/*Createsetmethodsforeveryinstancevariable.*/

//getmethods

/*Creategetmethodsforeveryinstancevariable.*/

//returnStringrepresentationofEmployeeobject

/*CreateatoStringmethodthatreturnsaStringcontainingthefirstname

andlastnameseparatedbyaspace.Then,appendanewlineandthesocial

securitynumber.*/

}//endclassEmployee

=========================================

//CommissionEmployee.java

//CommissionEmployeeclassderivedfromEmployee.

==========================================

/*WriteaclassheaderinwhichclassCommissionEmployee

inheritsfromclassEmployee*/

/*Declareinstancevariablesforgrosssalesandcommissionrat

温馨提示

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

评论

0/150

提交评论