版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
《Java語(yǔ)言程序設(shè)計(jì)》理論與上機(jī)復(fù)習(xí)題及部分答案
第1章Java語(yǔ)言基礎(chǔ)
一.概念復(fù)習(xí)和鞏固(請(qǐng)?jiān)谡n后和上機(jī)前完成下面的練習(xí))
1.下面說(shuō)法正確的是(C)。
A)Java程序的源文件名稱(chēng)與主類(lèi)(公共類(lèi))的名稱(chēng)相同,后綴可以是java或txt等。
B)JDK的編譯命令是java。
C)一個(gè)java源程序編譯后可能產(chǎn)生幾個(gè)字節(jié)碼文件。
D)在命令行運(yùn)行編譯好的字節(jié)碼文件,只需在命令行直接鍵入程序名即可運(yùn)行該程序。
2.下面的說(shuō)法正確的是(ABCD)。
A)Java語(yǔ)言是面向?qū)ο蟮?、解釋?zhí)行的網(wǎng)絡(luò)編程語(yǔ)言。
B)Java語(yǔ)言具有可移植性,是與平臺(tái)無(wú)關(guān)的編程語(yǔ)言。
C)Java語(yǔ)言可對(duì)內(nèi)存垃圾自動(dòng)收集。
D)Java語(yǔ)言編寫(xiě)的程序雖然是“一次編譯,到處運(yùn)行”,但必須要java的運(yùn)行環(huán)境。
3.下面main()方法的定義哪些是正確的(ACD)?
A)publicstaticvoidmain(Stringargs[]){}
B)publicstaticvoidmain(String[]){}
C)publicstaticvoidmain(String[]args){}
D)publicstaticvoidmain(String[]x){}
4.用于定義數(shù)據(jù)簡(jiǎn)單類(lèi)型的一組關(guān)鍵字是(B)。
A)class,float,main,public
B)float,boolean,int,long
C)char,extends,float,double
D)int,long,float,import
5.以下的變量定義中,合法的語(yǔ)句是(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";
以下賦值語(yǔ)句正確的是(ABD)。
A)s=s+i;B)f=L+i;C)L=f+i;D)s=s+i+f+d;
7.以下語(yǔ)句輸出的結(jié)果是(B)
Stringstr="123";
intx=4,y=5;
str=str+(x+y);
System.out.println(str);
A)1239B)12345C)會(huì)產(chǎn)生編譯錯(cuò)誤D)123+4+5
8.以下語(yǔ)句中沒(méi)有編譯錯(cuò)誤或警告提示信息的是(B)?
A)byteb=256;B)doubled=89L;C)charc="a";D)shorts=8.6f;
9.下面的程序輸出結(jié)果是:1+2=3,請(qǐng)將程序補(bǔ)充完整。
publicclassApp2{
publicstaticvoidmain(Stringargs[]) {
intx=1,y=2;
System.out.println(______________);
}
}
答案:x+"+"+y+"="+(x+y)
10.閱讀下面的程序,回答問(wèn)題。
程序如下:
publicclassApp1{
publicstaticvoidmain(Stringargs[]){
charch='\n';
System.out.print("Thefirstsnowcame,"+ch+"Howbeautifulitwas!");
}
}
(1)這是哪一類(lèi)java程序?
(2)寫(xiě)出保存該文件的文件名及后綴名?
(3)在JDK下編譯該文件的命令是什么?編譯后形成什么文件?
(4)在JDK下如何運(yùn)行該程序?程序運(yùn)行后輸出的結(jié)果如何?
10.答案:
(1)Java應(yīng)用程序(JavaApplication);
(2)App1.java;
(3)在命令行用javacApp1.java編譯該程序。
編譯后形成App1.class的字節(jié)碼文件;
(4)在命令行鍵入javaApp1即可運(yùn)行該程序。
編程序運(yùn)行后輸出的結(jié)果為:
Thefirstsnowcame,
Howbeautifulitwas!
11.閱讀下面的程序,回答問(wèn)題。
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)這是哪一類(lèi)java程序?
(2)寫(xiě)出保存該文件的文件名及后綴名?
(3)在JDK下編譯該文件的命令是什么?編譯后形成什么文件?
(4)該程序能直接運(yùn)行嗎?寫(xiě)出嵌入該程序的字節(jié)碼文件的html文件,該html文件可以任意命名嗎?
(5)程序運(yùn)行后輸出幾行?寫(xiě)出輸出結(jié)果。
11.答案:
(1)Java小程序(JavaApplet)。
(2)Applet1.java
(3)在命令行用javacApplet1.java編譯該程序。編譯后形成Applet1.class的字節(jié)碼文件。
(4)不能,為了能使程序運(yùn)行,還需編寫(xiě)html文件,用<applet></applet>標(biāo)記符將編譯形成的字節(jié)碼文件嵌入到html文件中,然后通過(guò)瀏覽器運(yùn)行JavaApplet?;蛟诿钚型ㄟ^(guò)命令appletviewer運(yùn)行html文件。嵌入該程序的字節(jié)碼文件的html文件如下,該html文件可以任意命名(如命名為mypage.htm)
mypage.htm文件如下:
<HTML>
<HEAD><TITLE>我的網(wǎng)頁(yè)</TITLE></HEAD>
<BODY>
<APPLET code=Applet1.classwidth=300height=200></APPLET>
</BODY>
</HTML>
(5)程序運(yùn)行后輸出2行;輸出結(jié)果如下:
二.本章上機(jī)實(shí)驗(yàn)
上機(jī)實(shí)驗(yàn)一
1.編寫(xiě)Java應(yīng)用程序,定義byte、int、long、float、double、char和boolean等類(lèi)型的數(shù)據(jù)并用一個(gè)輸出語(yǔ)句輸出,要求每行輸出一個(gè)數(shù)據(jù)。
2.編寫(xiě)Java小應(yīng)用程序,輸出兩行字符串:“Java很有趣?!焙汀芭W(xué)習(xí)Java編程?!?,輸出的起點(diǎn)坐標(biāo)是(20,20),行距是50像素。
3.使用算術(shù)運(yùn)算符得到一個(gè)4位十進(jìn)制數(shù)的各位數(shù)字并輸出,然后輸出該數(shù)的逆序數(shù)和各位數(shù)字平方后相加的和。
4.編寫(xiě)Java小應(yīng)用程序,用三目條件運(yùn)算符求程序中給定的4個(gè)double數(shù)的最大值和最小值并輸出結(jié)果。
5.編寫(xiě)Java應(yīng)用程序,分別利用while循環(huán)、do…while循環(huán)和for循環(huán)求100~200的自然數(shù)的和。
6.編寫(xiě)Java小應(yīng)用程序,選擇合適的數(shù)據(jù)類(lèi)型,利用循環(huán)求2的40次方的結(jié)果并輸出。
上機(jī)實(shí)驗(yàn)二
1.編寫(xiě)Java應(yīng)用程序,把100~1000的自然數(shù)中能夠被3整除的數(shù)輸出到屏幕上。
2.編寫(xiě)Java小應(yīng)用程序,程序中自定義一個(gè)方法:
doublefind2(intn)
方法的功能是求2的n次方。程序中調(diào)用該方法,輸出2的40次方的結(jié)果并輸出。
3.編寫(xiě)Java應(yīng)用程序,參照例1.15自定義類(lèi)Car,類(lèi)中有3個(gè)變量:字符串name,表示汽車(chē)的品牌;字符串color,表示汽車(chē)的顏色;double型變量weight,表示汽車(chē)的自重;int型變量passenger,表示汽車(chē)能搭乘的人數(shù)。類(lèi)中還定義一個(gè)構(gòu)造方法,用來(lái)初始化上面的4個(gè)變量。在應(yīng)用程序中創(chuàng)建類(lèi)Car的1個(gè)對(duì)象(品牌:“本田”;顏色:“黑色”;自重:1500公斤;搭乘的人數(shù):5人),并顯示其信息。
4.編寫(xiě)Java小應(yīng)用程序,其中定義一個(gè)int數(shù)組(數(shù)組元素任意指定),求數(shù)組元素的和、數(shù)組元素的最大值和最小值并輸出所求的結(jié)果。
5.編寫(xiě)Java應(yīng)用程序,從命令行傳入多個(gè)字符串到程序中,并將他們分行輸出在屏幕上。
本章上機(jī)拓展練習(xí)
1.查閱Java API幫助文檔,上機(jī)調(diào)試下面的程序,使之編譯通過(guò)并能正確運(yùn)行。
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幫助文檔,根據(jù)/**/中的注釋將下面的程序補(bǔ)充完整,使之編譯通過(guò)并能正確運(yùn)行。
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的整數(shù)的立方和平方
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解決簡(jiǎn)單的問(wèn)題
一.概念復(fù)習(xí)和鞏固(請(qǐng)?jiān)谡n后和上機(jī)前完成下面的練習(xí))
1.以下選項(xiàng)中變量均已正確定義,錯(cuò)誤的賦值語(yǔ)句是(D)。
A)i--;B)i+=7;
C)k+=x+2;D)y+x=z;
2.若以下變量均已正確定義并賦值,下面符合Java語(yǔ)言語(yǔ)法的表達(dá)式是(B)。
A)a=a≤7B)a=7+b+c
C)int12.3%4D)a=a+7=c+b
3.定義整型變量:intn=456;,表達(dá)式的值為5的是(AB)。
A)n/10%10B)(n-n/100*100)/10
C)n%10D)n/10
4.對(duì)下面的語(yǔ)句序列正確的說(shuō)法是(B)。
intc='A'/3;
c+='1'%5;
System.out.println(c);
A)產(chǎn)生編譯錯(cuò)誤;B)輸出結(jié)果25;
C)輸出結(jié)果21;D)輸出結(jié)果2;
5.設(shè)a,f,x,y,z均為int型的變量,并已賦值,下列表達(dá)式的結(jié)果屬于非邏輯值的是(D)。
A)x>y&&f<aB)-z<x-y
C)y!=++xD)y+x*x++
6.執(zhí)行下列程序段后,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語(yǔ)句是(D)。
A)switch(a+b);B)switch(a+b*3.0)
{……}{……}
C)switchaD)switch(a%b)
{……}{……}
9.以下由do-while語(yǔ)句構(gòu)成的循環(huán)執(zhí)行的次數(shù)是(D)。
A)無(wú)限次B)有語(yǔ)法錯(cuò),不能執(zhí)行
C)一次也不執(zhí)行D)執(zhí)行1次
intk=0;
do{++k;}while(k<1);
10.執(zhí)行完下面的程序段后,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.為了區(qū)分重載多態(tài)中同名的不同方法,要求(A)。
A)采用不同的形式參數(shù)列表B)返回值類(lèi)型不同
C)參數(shù)名不同D)選項(xiàng)A、B、C都對(duì)
14.在某個(gè)類(lèi)中定義一個(gè)方法:voidGetSort(intx),以下能作為這個(gè)方法的重載的是(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};
則對(duì)a數(shù)組元素正確的引用是(B)。
A)a[-3]B)a[9]C)a[10]D)a(0)
16.下面是在命令行運(yùn)行Java應(yīng)用程序A,怎樣才能在main(Stringargs[])方法中訪問(wèn)單詞"first"(BD)?
javaAthefirstsnow,thefirstsnowcame.
A)args[0]B)args[1]C)args[2]D)args[5]
二.本章上機(jī)實(shí)驗(yàn)
上機(jī)實(shí)驗(yàn)三
1.編寫(xiě)Java小程序,定義一個(gè)整數(shù)1255,把它的2進(jìn)制、16進(jìn)制的表示在屏幕輸出。
2.編寫(xiě)應(yīng)用程序,在main方法在中定義字符串“1.235678e2”、“87.8f”和“128”,將他們分別轉(zhuǎn)化為對(duì)應(yīng)的double數(shù)、float數(shù)和int數(shù)并輸出,最后輸出這三個(gè)數(shù)的和(要求結(jié)果保留到小數(shù)點(diǎn)后兩位)。
3.編寫(xiě)Java應(yīng)用程序,求40的階乘(要求輸出結(jié)果的每一位)。
4.編寫(xiě)Java小程序,打印九九乘法表。
5.編寫(xiě)Java小程序,求當(dāng)n=100時(shí)菲波那契(Fibonacci)數(shù)列的的比值。
6.編寫(xiě)Java應(yīng)用程序求1!+2!+...+20!的和并顯示,要求用方法實(shí)現(xiàn)求階乘。
上機(jī)實(shí)驗(yàn)四
1.一個(gè)三位數(shù),滿(mǎn)足數(shù)字算式:,其中*代表數(shù)字,使用一層循環(huán),求滿(mǎn)足條件的三位數(shù)。
2.編寫(xiě)Java應(yīng)用程序,實(shí)現(xiàn)以下功能:當(dāng)應(yīng)用程序運(yùn)行后,根據(jù)屏幕提示進(jìn)行交互式輸入并菲波那契(Fibonacci)數(shù)列的任意項(xiàng)。
3.應(yīng)用程序中定義方法頭如下所示的方法:
staticint[]add(int[]x,int[]y)
staticint[]multi(int[]x,int[]y)
add方法的功能是:把參數(shù)數(shù)組x和y(其元素個(gè)數(shù)相同)的每個(gè)元素相加,并作為返回?cái)?shù)組的元素;multi方法的功能是:把參數(shù)數(shù)組x和y(其元素個(gè)數(shù)相同)的每個(gè)元素相乘,并作為返回?cái)?shù)組的元素。在Java應(yīng)用程序中使用這兩個(gè)方法。
4.重載3個(gè)不同版本的max方法和min方法,這些方法均有4個(gè)參數(shù),分別用來(lái)求4個(gè)int、4個(gè)long、4個(gè)float數(shù)的最大值和最小值。編寫(xiě)Java應(yīng)用程序,使用這些方法。
5.編寫(xiě)Java應(yīng)用程序,程序運(yùn)行后,根據(jù)屏幕提示輸入一個(gè)數(shù)字字符串,回車(chē)后統(tǒng)計(jì)有多少個(gè)偶數(shù)數(shù)字和奇數(shù)數(shù)字。
6.編寫(xiě)應(yīng)用程序,定義一個(gè)5行3列的二維數(shù)組,給數(shù)組的每個(gè)元素賦10~100之間的隨機(jī)值,顯示二維數(shù)組每行的元素,并輸出所有元素的和。
本章上機(jī)拓展練習(xí)
1.查閱Java API幫助文檔,上機(jī)調(diào)試下面的程序,使之編譯通過(guò)并能正確運(yùn)行。
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.判斷一個(gè)數(shù)是否是回文數(shù)。根據(jù)/**/中的注釋將下面的程序補(bǔ)充完整,使之編譯通過(guò)并能正確運(yùn)行。
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分別用來(lái)加密和解密一個(gè)四位數(shù)。根據(jù)/**/中的注釋將下面的程序補(bǔ)充完整,使之編譯通過(guò)并能正確運(yùn)行。
===================================
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.下面的程序用來(lái)根據(jù)輸入的產(chǎn)品號(hào)和數(shù)量計(jì)算銷(xiāo)售額,請(qǐng)根據(jù)/**/中的注釋將下面的程序補(bǔ)充完整,使之編譯通過(guò)并能正確運(yùn)行。
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章類(lèi)、類(lèi)的繼承和接口
一.概念復(fù)習(xí)和鞏固(請(qǐng)?jiān)谡n后和上機(jī)前完成下面的練習(xí))
1.面向?qū)ο蟪绦蛟O(shè)計(jì)的基本特征是(ABCD)。
A)抽象B)封裝C)繼承D)多態(tài)
2.下面關(guān)于類(lèi)的說(shuō)法正確的是(ABCD)。
A)類(lèi)是Java語(yǔ)言中的一種復(fù)合數(shù)據(jù)類(lèi)型。B)類(lèi)中包含數(shù)據(jù)變量和方法。
C)類(lèi)是對(duì)所有具有一定共性的對(duì)象的抽象。D)Java語(yǔ)言的類(lèi)只支持單繼承。
3.下列選項(xiàng)中,用于在定義類(lèi)頭時(shí)聲明父類(lèi)名的關(guān)鍵字是(D)。
A)packageB)interfaceC)classD)extends
4.定義類(lèi)頭時(shí)可以使用的訪問(wèn)控制符是(CD)。
A)privateB)protected
C)publicD)缺省的,即沒(méi)有訪問(wèn)控制修飾符
5.有一個(gè)類(lèi)A,對(duì)于其構(gòu)造函數(shù)的聲明正確的是(B)。
A)voidA(intx){...} B)A(intx){...}
C)AA(intx){...} D)intA(intx){...}
6.設(shè)X為已定義的類(lèi)名,下列聲明對(duì)象x1的語(yǔ)句中正確的是(ABD)。
A)staticXx1;B)privateXx1=newX();
C)abstractXx1;D)finalXx1=newX();
7.設(shè)類(lèi)B是類(lèi)C的父類(lèi),下列聲明對(duì)象x1的語(yǔ)句中不正確的是(D)。
A)Bx1=newB();B)Bx1=newC();
C)Cx1=newC();D)Cx1=newB();
8.編譯運(yùn)行下面的程序,結(jié)果是(A)。
publicclassA{
publicstaticvoidmain(String[]args){
Bb=newB();
this.test();
}
publicvoidtest(){
System.out.print("A");
}
}
classBextendsA{
voidtest(){
super.test();
System.out.println("B");
}
}
A)產(chǎn)生編譯錯(cuò)誤,因?yàn)轭?lèi)B覆蓋類(lèi)A的方法test()時(shí),降低了其訪問(wèn)控制的級(jí)別。
B)代碼可以編譯運(yùn)行,并輸出結(jié)果:AB。
C)代碼可以編譯運(yùn)行,但沒(méi)有輸出。
D)代碼可以編譯運(yùn)行,并輸出結(jié)果:A。
9.下面的程序編譯運(yùn)行的結(jié)果是(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)編譯程序產(chǎn)生編譯錯(cuò)誤
10.為了使包abc中的所有類(lèi)在當(dāng)前程序中可見(jiàn),可以使用的語(yǔ)句是(A)。
A)importabc.*;B)packageabc.*;
C)importabc;D)packageabc;
二.本章上機(jī)實(shí)驗(yàn)
上機(jī)實(shí)驗(yàn)五
1.定義一個(gè)名為MyRectangle的矩形類(lèi),類(lèi)中有4個(gè)私有的整型域,分別是矩形的左上角坐標(biāo)(xUp,yUp)和右下角坐標(biāo)(xDown,yDown);類(lèi)中定義沒(méi)有參數(shù)的構(gòu)造方法和有4個(gè)int參數(shù)的構(gòu)造方法,用來(lái)初始化類(lèi)對(duì)象。類(lèi)中還有以下方法:getW()——計(jì)算矩形的寬度;getH()——計(jì)算矩形的高度;area()——計(jì)算矩形的面積;toString()——把矩形的寬、高和面積等信息作為為字符串返回。編寫(xiě)應(yīng)用程序使用MyRectangle類(lèi)。
2.設(shè)計(jì)一個(gè)Dog類(lèi),它有名字、顏色、年齡等屬性,定義構(gòu)造方法用來(lái)初始化類(lèi)的這些屬性,定義方法輸出Dog的信息。編寫(xiě)應(yīng)用程序使用Dog類(lèi)。
3.設(shè)計(jì)一個(gè)長(zhǎng)方體類(lèi)MyCube,該類(lèi)包含第1題中的MyRectangle類(lèi)對(duì)象作為類(lèi)的域,表示長(zhǎng)方體的底面;此外還包含一個(gè)整型變量d,表示長(zhǎng)方體的高。類(lèi)中定義構(gòu)造方法初始化類(lèi)對(duì)象、定義求體積和表面積的方法。編寫(xiě)應(yīng)用程序測(cè)試MyCube類(lèi)。
4.設(shè)計(jì)一個(gè)表示用戶(hù)的User類(lèi),類(lèi)中的變量有用戶(hù)名、口令(私有的)和記錄用戶(hù)個(gè)數(shù)的變量(靜態(tài)的),定義類(lèi)的3個(gè)構(gòu)造方法(沒(méi)有參數(shù)、有一個(gè)參數(shù)給用戶(hù)名賦值、有兩個(gè)參數(shù)給用戶(hù)名和口令賦值)、獲取和設(shè)置口令的方法、返回字符串表示的類(lèi)信息的方法(包括用戶(hù)名、口令)。編寫(xiě)應(yīng)用程序測(cè)試User類(lèi)。
上機(jī)實(shí)驗(yàn)六
1.定義一個(gè)抽象基類(lèi)Shape,它包含一個(gè)抽象方法getArea(),從Shape類(lèi)派生出Rectangle和Circle類(lèi),這兩個(gè)類(lèi)都用getArea()方法計(jì)算對(duì)象的面積。編寫(xiě)編寫(xiě)應(yīng)用程序使用Rectangle類(lèi)和Circle類(lèi)。
2.定義一個(gè)接口ClassName,接口中只有一個(gè)抽象方法getClassName()。設(shè)計(jì)一個(gè)類(lèi)Horse,該類(lèi)實(shí)現(xiàn)接口ClassName中的方法getClassName(),功能是獲取該類(lèi)的類(lèi)名。編寫(xiě)應(yīng)用程序使用Horse類(lèi)。
3.定義接口myItfc,接口中只有一個(gè)名為area的方法,該方法有一個(gè)double類(lèi)型參數(shù),返回類(lèi)型也為double。編寫(xiě)一個(gè)應(yīng)用程序,并實(shí)現(xiàn)接口myItfc,接口中area方法的實(shí)現(xiàn)是返回參數(shù)的立方值;在應(yīng)用程序中調(diào)用該方法并輸出其結(jié)果。
4.編寫(xiě)小程序,在小程序窗口中顯示字符串“java程序設(shè)計(jì)”,按下鍵盤(pán)上的箭頭鍵,可按照箭頭方向移動(dòng)(提示:得到鍵盤(pán)鍵代碼的方法是e.getKeyCode(),上、下、左、右鍵的編碼分別用常量VK_UP、VK_DOWN、VK_LEFT、VK_RIGHT表示)。
本章上機(jī)拓展練習(xí)
1.調(diào)式下面的程序,使之能編譯通過(guò)并正確運(yùn)行。
//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定義一個(gè)復(fù)數(shù)類(lèi),ComplexTest.java測(cè)試該復(fù)數(shù)類(lèi)。根據(jù)/**/中的注釋將下面的程序補(bǔ)充完整,使之編譯通過(guò)并能正確運(yùn)行。
============================
//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.下面的程序定義了父類(lèi)Employee和它的三個(gè)子類(lèi):CommissionEmployee類(lèi)、HourlyEmployee類(lèi)、SalariedEmployee類(lèi)都繼承自Employee類(lèi)。根據(jù)/**/中的注釋將下面的程序補(bǔ)充完整,使之編譯通過(guò)并能正確運(yùn)行。
============================
//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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年網(wǎng)絡(luò)安全服務(wù)合同標(biāo)的質(zhì)量驗(yàn)收
- 2024模具行業(yè)數(shù)據(jù)分析與共享合同
- 2024日常建筑設(shè)施維修維護(hù)及改造合同范本2篇
- 2024年鏟車(chē)安全操作規(guī)程合同
- 2024慈善捐贈(zèng)協(xié)議書(shū)
- 2024正畸治療新型材料研發(fā)與應(yīng)用合作合同3篇
- 2024年種羊遺傳材料交換合同3篇
- 2024房地產(chǎn)廣告設(shè)計(jì)服務(wù)合同
- 2025年度文化旅游資源開(kāi)發(fā)合同6篇
- 2024房地產(chǎn)買(mǎi)賣(mài)保密協(xié)議合同范本
- 山東省棗莊市滕州市2023-2024學(xué)年高二上學(xué)期期末考試數(shù)學(xué)試卷
- 智慧財(cái)務(wù)綜合實(shí)訓(xùn)
- 安徽省合肥市2021-2022學(xué)年七年級(jí)上學(xué)期期末數(shù)學(xué)試題(含答案)3
- 教育專(zhuān)家報(bào)告合集:年度得到:沈祖蕓全球教育報(bào)告(2023-2024)
- 寒假小學(xué)生心理健康教育
- 健康體檢授權(quán)委托書(shū)
- 肝臟腫瘤護(hù)理查房
- 人工智能 法規(guī)
- 琴房租賃合同
- 護(hù)士工作壓力管理護(hù)理工作中的壓力應(yīng)對(duì)策略
- 皮帶拆除安全技術(shù)措施
評(píng)論
0/150
提交評(píng)論