java语言程序设计基础篇第十版第十三章练习答案.docx
《java语言程序设计基础篇第十版第十三章练习答案.docx》由会员分享,可在线阅读,更多相关《java语言程序设计基础篇第十版第十三章练习答案.docx(53页珍藏版)》请在冰点文库上搜索。
java语言程序设计基础篇第十版第十三章练习答案
01
publicclassExercise13_01{
publicstaticvoidmain(String[]args){
TriangleNewtriangle=newTriangleNew(1,1、5,1);
triangle、setColor("yellow");
triangle、setFilled(true);
System、out、println(triangle);
System、out、println("Theareais"+triangle、getArea());
System、out、println("Theperimeteris"
+triangle、getPerimeter());
System、out、println(triangle);
}
}
classTriangleNewextendsGeometricObject{
privatedoubleside1=1、0,side2=1、0,side3=1、0;
/**Constructor*/
publicTriangleNew(){
}
/**Constructor*/
publicTriangleNew(doubleside1,doubleside2,doubleside3){
this、side1=side1;
this、side2=side2;
this、side3=side3;
}
/**ImplementtheabstractmethodfindAreainGeometricObject*/
publicdoublegetArea(){
doubles=(side1+side2+side3)/2;
returnMath、sqrt(s*(s-side1)*(s-side2)*(s-side3));
}
/**ImplementtheabstractmethodfindCircumferencein
*GeometricObject
**/
publicdoublegetPerimeter(){
returnside1+side2+side3;
}
@Override
publicStringtoString(){
//Implementittoreturnthethreesides
return"TriangleNew:
side1="+side1+"side2="+side2+
"side3="+side3;
}
}
02
importjava、util、ArrayList;
publicclassExercise13_02{
publicstaticvoidmain(String[]args){
ArrayListlist=newArrayList();
list、add(14);
list、add(24);
list、add(4);
list、add(42);
list、add(5);
shuffle(list);
for(inti=0;iSystem、out、print(list、get(i)+"");
}
publicstaticvoidshuffle(ArrayListlist){
for(inti=0;iintindex=(int)(Math、random()*list、size());
Numbertemp=list、get(i);
list、set(i,list、get(index));
list、set(index,temp);
}
}
}
03
importjava、util、ArrayList;
publicclassExercise13_03{
publicstaticvoidmain(String[]args){
ArrayListlist=newArrayList();
list、add(14);
list、add(24);
list、add(4);
list、add(42);
list、add(5);
sort(list);
for(inti=0;iSystem、out、print(list、get(i)+"");
}
publicstaticvoidsort(ArrayListlist){
for(inti=0;i//Findtheminimuminthelist[i、、list、length-1]
NumbercurrentMin=list、get(i);
intcurrentMinIndex=i;
for(intj=i+1;jif(currentMin、doubleValue()>list、get(j)、doubleValue()){
currentMin=list、get(j);
currentMinIndex=j;
}
}
//S(i)withlist、get(currentMinIndex)ifnecessary;
if(currentMinIndex!
=i){
list、set(currentMinIndex,list、get(i));
list、set(i,currentMin);
}
}
}
}
04
importjava、util、*;
publicclassExercise13_04{
staticMyCalendarcalendar=newMyCalendar();
publicstaticvoidmain(String[]args){
intmonth=calendar、get(MyCalendar、MONTH)+1;
intyear=calendar、get(MyCalendar、YEAR);
if(args、length>2)
System、out、println("UsagejavaExercise13_04monthyear");
elseif(args、length==2){
//useuser-definedmonthandyear
year=Integer、parseInt(args[1]);
month=Integer、parseInt(args[0]);
calendar、set(Calendar、YEAR,year);
calendar、set(Calendar、MONTH,month-1);
}
elseif(args、length==1){
//useuser-definedmonthforthecurrentyear
month=Integer、parseInt(args[0]);
calendar、set(Calendar、MONTH,month-1);
}
//setdatetothefirstdayinamonth
calendar、set(Calendar、DATE,1);
//printcalendarforthemonth
printMonth(year,month);
}
staticvoidprintMonth(intyear,intmonth){
//getstartdayoftheweekforthefirstdateinthemonth
intstartDay=getStartDay();
//getnumberofdaysinthemonth
intnumOfDaysInMonth=calendar、daysInMonth();
//printheadings
printMonthTitle(year,month);
//printbody
printMonthBody(startDay,numOfDaysInMonth);
}
staticintgetStartDay(){
returncalendar、get(Calendar、DAY_OF_WEEK);
}
staticvoidprintMonthBody(intstartDay,intnumOfDaysInMonth){
//printpaddingspacebeforethefirstdayofthemonth
inti=0;
for(i=0;iSystem、out、print("");
for(i=1;i<=numOfDaysInMonth;i++){
if(i<10)
System、out、print(""+i);
else
System、out、print(""+i);
if((i+startDay-1)%7==0)
System、out、println();
}
System、out、println("");
}
staticvoidprintMonthTitle(intyear,intmonth){
System、out、println(""+calendar、getMonthName()+","+year);
System、out、println("-----------------------------");
System、out、println("SunMonTueWedThuFriSat");
}
}
05
publicclassExercise13_05{
//Mainmethod
publicstaticvoidmain(String[]args){
//Createtwocomparablecircles
Circle1circle1=newCircle1(5);
Circle1circle2=newCircle1(4);
//Displaythemaxcircle
Circle1circle=(Circle1)GeometricObject1、max(circle1,circle2);
System、out、println("Themaxcircle'sradiusis"+circle、getRadius());
System、out、println(circle);
}
}
abstractclassGeometricObject1implementsComparable{
protectedStringcolor;
protecteddoubleweight;
//Defaultconstruct
protectedGeometricObject1(){
color="white";
weight=1、0;
}
//Constructageometricobject
protectedGeometricObject1(Stringcolor,doubleweight){
this、color=color;
this、weight=weight;
}
//Gettermethodforcolor
publicStringgetColor(){
returncolor;
}
//Settermethodforcolor
publicvoidsetColor(Stringcolor){
this、color=color;
}
//Gettermethodforweight
publicdoublegetWeight(){
returnweight;
}
//Settermethodforweight
publicvoidsetWeight(doubleweight){
this、weight=weight;
}
//Abstractmethod
publicabstractdoublegetArea();
//Abstractmethod
publicabstractdoublegetPerimeter();
publicintcompareTo(GeometricObject1o){
if(getArea()return-1;
elseif(getArea()==o、getArea())
return0;
else
return1;
}
publicstaticGeometricObject1max(GeometricObject1o1,GeometricObject1o2){
if(o1、compareTo(o2)>0)
returno1;
else
returno2;
}
}
//Circle、java:
ThecircleclassthatextendsGeometricObject
classCircle1extendsGeometricObject1{
protecteddoubleradius;
//Defaultconstructor
publicCircle1(){
this(1、0,"white",1、0);
}
//Constructcirclewithspecifiedradius
publicCircle1(doubleradius){
super("white",1、0);
this、radius=radius;
}
//Constructacirclewithspecifiedradius,weight,andcolor
publicCircle1(doubleradius,Stringcolor,doubleweight){
super(color,weight);
this、radius=radius;
}
//Gettermethodforradius
publicdoublegetRadius(){
returnradius;
}
//Settermethodforradius
publicvoidsetRadius(doubleradius){
this、radius=radius;
}
//ImplementthefindAreamethoddefinedinGeometricObject
publicdoublegetArea(){
returnradius*radius*Math、PI;
}
//ImplementthefindPerimetermethoddefinedinGeometricObject
publicdoublegetPerimeter(){
return2*radius*Math、PI;
}
//Overridetheequals()methoddefinedintheObjectclass
publicbooleanequals(Circle1circle){
returnthis、radius==circle、getRadius();
}
@Override
publicStringtoString(){
return"[Circle]radius="+radius;
}
@Override
publicintcompareTo(GeometricObject1o){
if(getRadius()>((Circle1)o)、getRadius())
return1;
elseif(getRadius()<((Circle1)o)、getRadius())
return-1;
else
return0;
}
}
06
publicclassExercise13_06{
//Mainmethod
publicstaticvoidmain(String[]args){
//Createtwocomarablerectangles
ComparableCirclecircle1=newComparableCircle(5);
ComparableCirclecircle2=newComparableCircle(15);
//Displaythemaxrect
ComparableCirclecircle3=(ComparableCircle)Max、max(circle1,circle2);
System、out、println("Themaxcircle'sradiusis"+circle3、getRadius());
System、out、println(circle3);
}
}
classComparableCircleextendsCircleimplementsComparable{
/**ConstructaComparableRectanglewithspecifiedproperties*/
publicComparableCircle(doubleradius){
super(radius);
}
@Override
publicintcompareTo(ComparableCircleo){
if(getRadius()>o、getRadius())
return1;
elseif(getRadius()return-1;
else
return0;
}
}
//Max、java:
Findamaximumobject
classMax{
/**Returnthemaximumoftwoobjects*/
publicstaticComparableCirclemax
(ComparableCircleo1,ComparableCircleo2){
if(o1、compareTo(o2)>0)
returno1;
else
returno2;
}
}
07
publicclassExercise13_07{
publicstaticvoidmain(String[]args){
GeometricObject[]objects={newSquare
(2),newCircle(5),newSquare(5),newRectangle(3,4),newSquare(4、5)};
for(inti=0;iSystem、out、println("Areais"+objects[i]、getArea());
if(objects[i]instanceofColorable)
((Colorable)objects[i])、howToColor();
}
}
}
interfaceColorable{
voidhowToColor();
}
classSquareextendsGeometricObjectimplementsColorable{
privatedoubleside;
publicSquare(doubleside){
this、side=side;
}
@Override
publicvoidhowToColor(){
System、out、println("Colorallfoursides");
}
@Override
publicdoublegetArea(){
returnside*side;
}
@Override
publicdoublegetPerimeter(){
return4*side;
}
}
08
importjava、util、ArrayList;
publicclassExercise13_08{
publicstaticvoidmain(String[]args){
MyStack1stack=newMyStack1();
stack、push("S1");
stack、push("S2");
stack、push("S");
MyStack1stack2=(MyStack1)(stack、clone());
stack2、push("S1");
stack2、push("S2");
stack2、push("S");
System、out、println(stack、getSize());
System、out、println(stack2、getSize());
}
}
classMyStack1implementsCloneable{
privateArrayList
publ