java语言程序设计基础篇第十版第十三章练习答案讲课讲稿.docx
《java语言程序设计基础篇第十版第十三章练习答案讲课讲稿.docx》由会员分享,可在线阅读,更多相关《java语言程序设计基础篇第十版第十三章练习答案讲课讲稿.docx(51页珍藏版)》请在冰点文库上搜索。
java语言程序设计基础篇第十版第十三章练习答案讲课讲稿
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;
}
}
//Swaplist.get(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(pareTo(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(pareTo(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