![Java程序设计习题答案_第1页](http://file4.renrendoc.com/view11/M00/1D/32/wKhkGWWNcQmAX_I0AAGX-iX4ixU305.jpg)
![Java程序设计习题答案_第2页](http://file4.renrendoc.com/view11/M00/1D/32/wKhkGWWNcQmAX_I0AAGX-iX4ixU3052.jpg)
![Java程序设计习题答案_第3页](http://file4.renrendoc.com/view11/M00/1D/32/wKhkGWWNcQmAX_I0AAGX-iX4ixU3053.jpg)
![Java程序设计习题答案_第4页](http://file4.renrendoc.com/view11/M00/1D/32/wKhkGWWNcQmAX_I0AAGX-iX4ixU3054.jpg)
![Java程序设计习题答案_第5页](http://file4.renrendoc.com/view11/M00/1D/32/wKhkGWWNcQmAX_I0AAGX-iX4ixU3055.jpg)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《Java程序设计》习题答案第1章拓展训练1、安装JDK,并配置环境变量。答:参考项目1Java环境的安装、搭建。2、编写程序输入“床前明月光,疑是地上霜。举头望明月,低头思故乡。”到屏幕。参考程序:classPoem{{ publicstaticvoidmain(Stringargs[]) { System.out.println("床前明月光,疑是地上霜。举头望明月,低头思故乡。"); }}习题答案一、填空题1.Java语言是___SUN______公司发明的。2.字节码文件的后缀名为____class_____。3.使用Java语言编程时,代码对大小写___敏感______。4.在DOS环境下,编译Java程序的命令是___javac______。二、简答题1.Java语言的特点是什么?答:简单性、安全性、平台无关性、可移植性、面向对象语言、多线程、健壮性。2.如何设置JDK?答:设置系统环境变量java_home为JDK安装目录;设置系统环境变量path为“%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin”;设置系统环境变量classpath为“.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar”。3.开发与运行Java程序需要经过哪些主要步骤和过程?答:第一步,搭建Java开发环境;第二步,编写程序;第三步,编译程序;第四步,解释运行。第2章拓展训练1、参照任务,编写一个程序,输出自己的名字。(添加适当的注释和空白符)参考程序:publicclassHello{ publicstaticvoidmain(Stringargs[]) {System.out.println("你的姓名"); }}2、将任务中未出现的基本类型,再进行两两加法运算,并自行分析结果。参考程序: 略。3、写出下面表达式的结果,假设a=1,b=2,f=false:(1)--a%b++ (2)(a>=3&&a<=20?a:b)(3)f&&(a<b) (4)(++a)>a(1)0 (2)true (3)false (4)false4、输入平行四边形的底和高,求面积。参考程序:importjava.io.*;//引入io包中的IOException类classParallelogram{publicstaticvoidmain(Stringarg[])throwsIOException//抛出异常 { Stringstr; BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in)); System.out.println("请输入平行四边形的底边长度:"); str=br.readLine(); floatf1=Float.parseFloat(str);//转换字符串为实型数据 System.out.println("请输入平行四边形的高:"); str=br.readLine(); floatf2=Float.parseFloat(str);//转换字符串为实型数据 System.out.println("平行四边形的面积为:"+(f1*f2)); }}习题答案一、简答题1.Java中的标识符是由哪些字符组成的?答:Java语言规定标识符由字母,下划线,美元符号和数字组成,并且第一个字符不能是数字字符。2.Java中有哪些关键字?简单数据类型包含哪几种?各种数据类型变量的定义方法和常量的表示方法及取值范围。答:Java的关键字有:abstractelseinterfacesuperBooleanextendslongswitchbreakfalsenativesynchronizedbytefinalnewthiscasefinallynullthrowcatchfloatpackagethrowscharforprivatetransientclassifprotectedtruecountinueimplementspublictrydefaultimportreturnvoiddoinstanceofshortwhiledoubleintstatic 简单数据类型包括:六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。 各种数据类型变量的定义方法和常量的表示方法及取值范围,参看案例2-2-1的相关知识。3.Java中各简单数据类型间的优先次序和自动转换规则是什么?各数据类型间在什么情况下,进行自动转换,在什么情况下使用强制转换?答:类型按精度从“底”到“高”排列了顺序为:byte、short、int、long、float、double当把在级别低的变量的值赋给级别高的变量时,系统自动完成数据类型的转换。当把在级别高的变量的值赋给级别底变量时,必须使用强制类型转换运算。4.Java中有哪些运算符?这些运算符的优先关系是怎样的?答:参看表2-6运算符优先级5.分隔符种类是什么?各包括哪些符号,作用是什么?。答:分隔符有普通分隔符、空白符和注释三种。普通分隔符有:,逗号分隔变量声明中连续的标识符,或在for语句中连接语句。;分号语句(statement)结束符。。句号用于分隔包、子包和类或分隔引用变量中的变量和方法。()括号用于在方法定义和访问中将参数表括起来,或在表达式中定义运算的先后顺序,或在控制语句中将表达式和类型转换括起来。[]方括号用于声明数据类型,及引用数组的元素值。{}花括号它将若干语句序列括起来作为一个程序代码块,或为数组初始化赋值空白符主要包括:制表符、空格符和回车。三种注释方式://单行注释符。/*……*/块注释符。/**……*/文档注释。二、程序调试题答案:略。三、编程题1.编写程序,已知半径,求圆面积。importjava.io.*;//引入io包中的IOException类classex01{publicstaticvoidmain(Stringarg[]){ floatr=2; System.out.println("面积为:"+(3.14*r*r)); }}2.编写程序,对一个已知三位整数,求各个位上的数字和。importjava.io.*;//引入io包中的IOException类classex02{publicstaticvoidmain(Stringarg[]){ inta=132; System.out.println("132各个位上的数字和为:"+(132/100+132%100/10+132%10)); }}3.编写程序,输入球的半径,求体积。参考答案:importjava.io.*;//引入io包中的IOException类classex03{publicstaticvoidmain(Stringarg[])throwsIOException//抛出异常{Stringstr;BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in)); System.out.println("inputafloat:"); str=br.readLine(); floatr=Float.parseFloat(str); System.out.println("体积为:"+(4/3*3.14*r*r*r)); }}4.编写程序,输入梯形的上底、下底和高,求面积。参考答案:importjava.io.*;//引入io包中的IOException类classex04{publicstaticvoidmain(Stringarg[])throwsIOException//抛出异常{Stringstr;BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in)); System.out.println("上底:"); str=br.readLine(); floatfs=Float.parseFloat(str); System.out.println("下底:"); str=br.readLine(); floatfx=Float.parseFloat(str); System.out.println("高:"); str=br.readLine(); floatfg=Float.parseFloat(str); System.out.println("面积为:"+(fs+fx)*fg/2); }}5.编写程序,对输入的两个整数进行比较,输出大数。提示:使用三元条件运算符(?:)参考程序:importjava.io.*;//引入io包中的IOException类classex05{publicstaticvoidmain(Stringarg[])throwsIOException//抛出异常{Stringstr;BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in)); System.out.println("inputaint:"); str=br.readLine(); inti1=Integer.parseInt(str);//转换字符串为整型数据 //或i1=Int.valueOf(str).intValue(); System.out.println("inputanotheraint:"); str=br.readLine(); inti2=Integer.parseInt(str);//转换字符串为整型数据 //或i2=Int.valueOf(str).intValue(); i1=i1>i2?i1:i2; System.out.println("大数是:"+i1); }}第3章拓展训练参考答案:【3.1.1拓展训练】给出华氏温度F,输出摄氏温度c。其中公式classExp3{publicstaticvoidmain(String[]args){intf=90;floatc;c=5*(f-32)/9F;System.out.println("c="+c);}}【3.2.1拓展训练】比较a,b两个数,若a大于b,则输出“a>b”,否则输出“a<=b”。classExp321{publicstaticvoidmain(String[]args){inta,b;a=90;b=78;System.out.println("a="+a+"b="+b);if(a>b)System.out.println("a>b");elseSystem.out.println("a<=b");}}【3.2.2拓展训练】编程计算:当x<=-1时,f(x)=2*x*x+10;当-1<x<1时,f(x)=3*x+78;当x>=1时,f(x)=x*x*x-1。classExp322{publicstaticvoidmain(String[]args){intx=6;intfx;if(x<=-1)fx=2*x*x+10;elseif(x<1)fx=3*x+78;elsefx=x*x*x-1;System.out.println("fx="+fx);}}【3.2.3拓展训练】输入整数1~7,可以转换输出对应的星期几英文名称,若为其它整数,则输出“输入数据错误!”。importjava.util.Scanner;classUseSwitch{publicstaticvoidmain(String[]args){intday=0;System.out.println("inputanumber:");Scannerscanner=newScanner(System.in);//创建scanner对象接收数据day=Integer.valueOf(scanner.nextLine());//把数据转换为int类型的数据switch(day){case1:System.out.println("Monday");break;case2:System.out.println("Tuesday");break;case3:System.out.println("Wednesday");break;case4:System.out.println("Thursday");break;case5:System.out.println("Firday");break;case6:System.out.println("Saturday");break;case7:System.out.println("Sunday");break;default:System.out.println("输入数据错误!");break;}}}【3.3.1拓展训练】1、如果一个三位数的个位数、十位数和百位数的立方和等于该数本身,则称该数位水仙花数。编程打印所有的水仙花数。classExp3-3-1{publicstaticvoidmain(String[]args){intnum;inta,b,c;for(num=100;num<=999;num++){a=num/100;b=(num-a*100)/10;c=num-a*100-b*10;if(a*a*a+b*b*b+c*c*c==num)System.out.println(num);}}}【3.3.2拓展训练】编写程序,打印输出以下图案。112123412345classExp332{publicstaticvoidmain(String[]args){inti,j;for(i=1;i<6;i++){for(j=1;j<=i;j++)System.out.print(j+"");System.out.print("\n");}}}【3.4.1拓展训练】1、输出100以内的素数。classExp341{publicstaticvoidmain(String[]args){intn,k,i,flag=1;for(n=2;n<=100;n++){k=(int)Math.sqrt(n+1);for(i=2;i<=k;i++){if(n%i==0){flag=0;break;}}if(flag==1)System.out.print(n+"");flag=1;}}}习题答案一、填空题1.写出下面逻辑表达式的值,设a=2,b=3,c=5。(1)a+b>c&&b==c的值为(2)(a<b)&&(a<c)的值为(3)a==(b-c)的值为答案:(1)false(2)true(3)true2.以下程序时实现输出x,y,z三个整数的最小者,填完整程序。classSmallNumber{publicstaticvoidmain(String[]args){intx=30,y=56,z=23;int(1);if(x<y)(2);elsetemp=y;if((3))temp=z;System.out.println("Smallnumberis"+temp);}}答案:(1)temp(2)temp=x(3)temp>z二、编程题1.编程计算一元二次方程的实根(设)。参考程序:classProblem1{publicstaticvoidmain(String[]args){inta,b,c;doublex1,x2;doubletemp;a=1;b=-5;c=6;temp=Math.sqrt(b*b-4*a*c);x1=(-b+temp)/(2*a);x2=(-b-temp)/(2*a);System.out.println("x1="+x1);System.out.println("x2="+x2);}}2.编写程序判断某一年是否为闰年。参考程序:classProblem2{publicstaticvoidmain(String[]args){intyear;booleanflag;year=1976;if(year%4==0){if(year%100==0){if(year%400==0)flag=true;elseflag=false;}elseflag=true;;}elseflag=false;if(flag)System.out.print("Theyearisaleapyear!");elseSystem.out.print("Theyearisnotaleapyear!");}}3.编写程序,打印下了100~200之间不能被3整除的数。参考程序:classProblem3{publicstaticvoidmain(String[]args){inti,j;j=0;for(i=100;i<=200;i++){if(i%3!=0)//判断是否能被3整除{System.out.print(i+"");j++;if(j%5==0)System.out.print("\n");//换行}}}}4.编写程序列举百元买百鸡,公鸡每只5元,母鸡每只3元,小鸡1元3只,有多少种买法。参考程序:classProblem4{publicstaticvoidmain(String[]args){intcock,hen,chicken;//公鸡cock,母鸡hen,小鸡chickenfor(cock=0;cock<=20;cock++)for(hen=0;hen<=33;hen++)for(chicken=0;chicken<=100;chicken++)if((cock+hen+chicken==100)&&(hen*3+cock*5+chicken/3==100))System.out.println("cock="+cock+"hen="+hen+"chicken="+chicken);}}5.编写程序,求200~300之间的数,个位、十位和百位数的乘积为42,和为12。参考程序:classProblem5{publicstaticvoidmain(String[]args){intnumber;inta,b,c;for(number=200;number<300;number++){a=number/100;b=(number-a*100)/10;c=number-a*100-b*10;if((a*b*c==42)&&(a+b+c==12))System.out.println(number);}}}第4章拓展训练1、定义一个10个长度的一维整型数组,输出数组中所存数的平均值。参考程序:publicclassAverage{publicstaticvoidmain(Stringargs[]){ inti,sum=0; inta[]={84,85,78,79,86,95,68,56,63,93}; for(i=0;i<10;i++) sum=sum+a[i] System.out.print("数组元素为:"); for(i=0;i<10;i++) System.out.print(a[i]+""); System.out.println("平均值为:”+sum/10.0);}}2、定义一个类,计算并输出杨辉三角。参考程序:publicclassYangHui{ publicstaticvoidmain(String[]args) { inti,j; intlevel=6; inta[][]=newint[level][]; System.out.println("杨辉三角形:"); for(i=0;i<a.length;i++) a[i]=newint[i+1]; a[0][0]=1; for(i=1;i<length;i++){ a[i][0]=1; for(j=1;j<a.length;j++) a[i][j]=a[i-1][j-1]+a[i-1][j]; a[i][a[i].length-1]=1; } for(i=0;i<a.length;i++){ for(j=0;j<a[i].length;j++) System.out.print(a[i][j]+""); System.out.println(); } }}3、使用冒泡排序法,对上题数组元素进行降序排列。参考程序:publicclasssort{publicstaticvoidmain(String[]args){inti=0,j=0,k;intintArray[]={64,21,55,17,36};intlen=intArray.length;booleanb=false; //用于标示是否有元素交换for(i=0;i<len;i++){for(j=0;j<len-i-1;j++)if(intArray[j]<intArray[j+1]){intt=intArray[j];intArray[j]=intArray[j+1];intArray[j+1]=t; b=true; //表示本轮有元素交换} if(b)b=false;elsebreak;//有交换还原标记,无交换跳出循环 System.out.print("第"+(i+1)+"轮:"); for(k=0;k<len;k++)System.out.print(intArray[k]+""); System.out.println(); }System.out.println("排序后的结果为:");for(i=0;i<len;i++)System.out.print(intArray[i]+"");}}4、描述如何应用二分法在数组中{1,3,4,5,7,8,10,12,23,34,45,55}查找关键字10。答:略。5、有一行文字。要统计出其中英文大写字母、小写字母、数字、空格以及其它字符各有多少个。importjava.io.*;//引入io包中的IOException类publicclassex06{ publicstaticvoidmain(Stringargs[])throwsIOException//抛出异常{ intupp=0,low=0,dig=0,spa=0,oth=0,i; Stringstr; charchr; BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in)); System.out.print("请输入一个字串:"); str=br.readLine(); for(i=0;i<str.length();i++) { chr=str.charAt(i); if(chr>='A'&&chr<='Z') upp++; else if(chr>='a'&&chr<='z') low++; else if(chr>='0'&&chr<='9') dig++; else if(chr=='') spa++; else oth++; } System.out.print("upp="+upp+"low="+low+"dig="+dig+"spa="+spa+"oth="+oth); }}习题答案一、编程题1、已知一个班10个学生,要求输入这10个学生的成绩,然后求平均成绩。importjava.io.*;//引入io包中的IOException类publicclassex01{ publicstaticvoidmain(Stringargs[])throwsIOException//抛出异常{ floatscore[],sum=0,aver; inti; Stringstr; BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in)); score=newfloat[10]; System.out.print("请输入学生的成绩:"); for(i=0;i<10;i++) { str=br.readLine(); score[i]=Float.parseFloat(str); sum=sum+score[i]; } aver=sum/i; System.out.print("平均成绩为:"+aver); }}2、已知一个班10个学生的成绩,存放在一个一维数组中,要求找出其中成绩最高的学生的成绩和该生的序号。publicclassex02{ publicstaticvoidmain(Stringargs[]) { floatscore[]={78,89,48,89,68,78,98,63,75,88},max=0; inti,n=0; for(i=0;i<10;i++) { if(score[i]>max){max=score[i];n=i;} } System.out.print("最高成绩为:"+max+",序号为"+n); }}3、有三个学生,上4门课,要求输入全部学生的各科成绩,并分别求出每门课的平均成绩。importjava.io.*;//引入io包中的IOException类publicclassex03{ publicstaticvoidmain(Stringargs[])throwsIOException//抛出异常{ floatscore[][],sum=0,aver=0; Stringstr; inti,j; score=newfloat[3][4]; BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in)); System.out.print("请输入学生成绩:"); for(i=0;i<3;i++) for(j=0;j<4;j++) { str=br.readLine(); score[i][j]=Float.parseFloat(str); } for(i=0;i<4;i++) { for(j=0;j<3;j++) { sum=sum+score[j][i]; } aver=sum/3; sum=0; System.out.println("第"+(i+1)+"门课的平均成绩为:"+aver); } }}4、将一个数组中的值按逆序重新存放。例如,原来的顺序是8、7、6、9、5,要求改为5、9、6、7、8。importjava.io.*;//引入io包中的IOException类publicclassex04{ publicstaticvoidmain(Stringargs[])throwsIOException//抛出异常{ inta[],i,temp,n=5; Stringstr; BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in)); a=newint[5]; System.out.print("请输入五个整数:"); for(i=0;i<n;i++) { str=br.readLine(); a[i]=Integer.valueOf(str).intValue(); } for(i=0;i<n;i++) System.out.print(a[i]+""); System.out.println(); for(i=0;i<n/2;i++) { temp=a[i]; a[i]=a[n-i-1]; a[n-i-1]=temp; } for(i=0;i<n;i++) System.out.print(a[i]+""); }}5、有15个数按由小到大的顺序存放在一个数组中,输入一个数,要求用二分查找法找出该数在数组中的位置。如果该数不存在,则输出“无此数”。importjava.io.*;//引入io包中的IOException类publicclassex05{ publicstaticvoidmain(Stringargs[])throwsIOException//抛出异常{ inta[]={1,2,3,4,5,6,7,8,10,11,12,13,14,15,16},num,i=15; Stringstr; booleanb=false; BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in)); System.out.print("请输入要查找的整数:"); str=br.readLine(); num=Integer.valueOf(str).intValue(); if(num<a[0]||num>a[14]) b=false; else { intlow=0; inthigh=a.length-1; while(high>=low){ intmid=(low+high)/2; if(num<a[mid]) high=mid-1; elseif(num==a[mid]) {System.out.print(mid);b=true;break;} else low=mid+1; } } if(!b)System.out.print("无此数!"); }}6、对一维整型数组a中的10个整数,用冒泡排序法,对数组元素排序,将结果输出。参考程序:classarraySort{publicstaticvoidmain(Stringarg[]){int[]a={3,4,67,8,12,44,654,67,76,98}; inti=0,j=0; intlen=a.length; booleanb=false; for(i=0;i<len;i++){for(j=0;j<len-i-1;j++)if(a[j]>a[j+1]){intt=a[j];a[j]=a[j+1];a[j+1]=t; b=true;} if(b)b=false;elsebreak; }System.out.println("排序后的结果为:");for(i=0;i<len;i++)System.out.print(a[i]+"");}}7、使用字符串处理方法对文本语句中的单词计数。参考程序:publicclassCalWord{ publicstaticvoidmain(Stringargs[]){ Strings1="MyfriendWelcometoJava!"; System.out.println("Thewordsofthissentence:"); intn=0; for(inti=0;i<s1.length();i++){ charm=s1.charAt(i); if(!((m>='A'&&m<='Z')||(m>='a'&&m<+'z'))) n=n+1; } System.out.print(n); }}8、编写程序,比较两个字符串是否相等。参考程序:importjava.io.*;publicclassStringCompare{ publicstaticvoidmain(String[]args)throwsIOException//抛出异常 { Stringstr1; Stringstr2; BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in)); System.out.println("输入字符串1:"); str1=br.readLine(); System.out.println("输入字符串1:"); str2=br.readLine(); if(str1.equals(str2) System.out.println("字符串相等"); else System.out.println("字符串不相等"); }}第5章拓展训练答案5.1创建一个日期类Date并输出信息。publicclassDate{privateintday;privateintmonth;privateintyear;publicvoidsetDate(intd,intm,inty){day=d;month=m;year=y;}publicvoidprintDate(){System.out.println("今天是"+year+"年"+month+"月"+day+"日");}publicstaticvoidmain(String[]args){Datetoday=newDate();today.setDate(18,2,2010);Datethisday;thisday=today;thisday.printDate();}}5.2.1使用方法计算3、6和9的阶乘并输出结果publicclassTestFunction2{//第一个方法是main方法,它3次调用了第二个方法publicstaticvoidmain(String[]args){factorial(5);factorial(6);factorial(7);}//第二个方法是factorial方法,它求出参数n的阶乘并输出staticvoidfactorial(intn){longz=1L;intx=n;for(;x>0;x--)//该循环求n的阶乘z*=x;System.out.println(n+"!="+z);//输出n的阶乘}}5.2.2设计一个矩形类,封装它的状态和行为,定义数据变量和方法,计算矩形的面积。classarea{doublewidth,height;area(doublew,doubleh){width=w;height=h;}doubleproduct(){returnwidth*height;}}classexample1{publicstaticvoidmain(String[]args){doubled;area矩形=newarea(30,40);d=矩形.product();System.out.println("矩形的面积是:"+d);}}5.3.1设计程序,实现子类可以继承父类中非私有数据成员。publicclassExtendsExam{publicstaticvoidmain(String[]args){subclasse=newsubclass();e.x=1;e.z="Hello!";e.setA();System.out.println("调用方法getX()的结果:"+e.getX());System.out.println("调用方法getZ()的结果:"+e.getZ());System.out.println("调用方法getA()的结果:"+e.getA());}}classsuperclass{publicintx;privatefloaty;Stringz;intgetX(){return(x);}StringgetZ(){return(z);}}classsubclassextendssuperclass{privateinta;voidsetA(){a=2;}intgetA(){return(a);}}5.3.2设计程序,建立Animal类,从Animal类派生出Dog类和Cat类,通过方法覆盖实现类的多态。classAnimal{publicvoidfun(){System.out.println("Animalisfun");}}classDogextendsAnimal{publicvoidfun(){System.out.println("wangwang");}}classCatextendsAnimal{publicvoidfun(){System.out.println("miaomiao");}}publicclassTestPoly{publicstaticvoidmakefun(Animala){a.fun();}publicstaticvoidmain(String[]args){Dogb=newDog();Catc=newCat();makefun(b);makefun(c);}}5.4.1设计程序计算圆柱体的体积,使用接口实现类的多重继承。interfaceFace1{doublepi=3.14;abstractdoublearea();}interfaceFace2{abstractvoidvolume();}publicclassCylinderimplementsFace1,Face2{privatedoubleradius;privateintheight;publicCylinder(doubler,inth){radius=r;height=h;}publicdoublearea(){returnpi*radius*radius;}publicvoidvolume(){System.out.println("圆柱体的体积="+area()*height);}publicstaticvoidmain(String[]args){Cylindervolu=newCylinder(2.0,3);volu.volume();}}5.4.2设计程序实现一个接口继承多个接口。interfaceA{voidf();}interfaceB{voidg();}interfaceCextendsA{voidh();}interfaceDextendsB,C{voidi();}classEimplementsD{publicvoidf(){System.out.println("f()inD");}publicvoidg(){System.out.println("g()inD");}publicvoidh(){System.out.println("h()inD");}publicvoidi(){System.out.println("i()inD");}}publicclassInterfaceExtends{publicstaticvoidrunf(Aa){a.f();}publicstaticvoidrung(Bb){b.g();}publicstaticvoidrunh(Cc){c.h();}publicstaticvoidruni(Dd){d.i();}publicstaticvoidmain(String[]args){Ee=newE();runf(e);rung(e);runh(e);runi(e);}}5.5.1输出一个学生信息,将Man类放入包mypackage,并用mypackage包中的TestMan类实现该Man类。packagemypackage;publicclassMan{Stringname;intage;publicMan(Stringn,inta){name=n;age=a;}publicvoidshow(){if(age<18)System.out.println(name+"的年龄是"+age);}}importmypackage.*;publicclassTestMan{publicstaticvoidmain(Stringargs[]){Mantest=newMan("李晓峰",15);test.show();}}5.5.2定义一个animal包,在包中添加两个类,设计程序导入包animal,程序中可以使用其中所有的类。packagemypackage.animal;publicclassCAt{publicvoidcat(){System.out.println("miaomiao");}}packagemypackage.animal;publicclassDOG{publicvoiddog(){System.out.println("wangwang");}}importmypackage.animal.*;publicclassusepackage{publicstaticvoidmain(String[]args){CATa=newCAT();DOGb=newDOG();a.cat();b.dog();}}习题解答一、简答题1.类与对象的区别是什么。[解答]:Java程序的基本单位是类。对象是对事物的抽象,而类是对对象的抽象和归纳,找出事物的共性,把具有共同性质的事物归结为一类,得出一个抽象的概念——类。类是具有相同属性和方法的一组对象的集合,类是在对象之上的抽象,对象则是类的具体化,一旦建立类之后,就可用它来建立许多你需要的对象。2.如何定义方法?在面向对象程序设计中方法有什么作用?[解答]:方法的定义由两部分组成:方法声明和方法体。方法声明的基本格式如下:返回类型方法名(形式参数){…//方法体内容}方法声明包括方法名、返回类型和形式参数,方法的小括号是方法的标志;方法体为实现方法行为的Java语句。在面向对象程序设计中,方法所起的作用是完成对类和对象属性操作。3.什么是修饰符?修饰符的种类有哪些?它们各有什么作用?[解答]:修饰符是用于限定类对象使用的权限,从而实现类中成员的信息隐藏。访问修饰符适用于类成员,而不是方法内部的局部变量。Java常见的访问修饰符有这4种:private、default、protected和public。public可以被所有的类访问pravite只能被类本身访问,其他类无法访问(3)protected可以被类本身、它的子类(包括同一个包中以及不同包中的子类)
(4)default属于默认的访问状态,可以被类本身和同一个包中的类访问4.成员变量的修饰符有哪些?各修饰符的作用是什么?答:(1)static(静态)变量由static修饰的变量称为静态变量,静态变量是类固有的,可以直接引用(方法:类名.静态变量名),其他成员变量仅仅被声明,只有等到生成实例对象后才存在,才可以被引用。(2)final(最终)变量一旦成员变量被声明为final,在程序运行中将不能被改变,即是一个常量。(3)transient(过渡)变量(不做要求)Java目前对transient修饰符没有明确说明,它一般用在对象序列化(objectserialization)上,说明成员变量不许被序列化。(4)volatile(易失)变量(volatile声明的成员变量为易失变量,用来防止编译器对该成员进行某种优化。5.什么是抽象类?为什么要引入抽象类的概念?[解答]:抽象类是用来描述人们在对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。抽象类不具备实际功能,是专门设计用来让子类继承的类,把这些具有共同特征的方法抽象出来,由子类负责这些抽象方法的实现细节,而父类仅提供此方法的名称和声明。6.什么是继承?如何定义继承关系?[解答]:同类事物具有共同性,在同类事物中,每个事物又具有其特殊性。运用抽象的原则舍弃对象的特殊性,抽取其共同性,则得到一个适应于一批对象的类,这便是基类(父类),而把具有特殊性的类称为派生类(子类),派生类的对象拥有其基类的全部或部分属性与方法,称作派生类对基类的继承。派生类继承基类,必须使用关键字extends来声明。比如派生类B继承基类A,派生类B定义的一般形式如下:classBextendsA{…}7.什么是多态,如何实现多态?[解答]:多态是指一个程序中同名的不同方法共存的情况。这些方法同名的原因是它们的最终功能和目的都相同,但是由于在完成同一功能时,可能遇到不同的具体情况,所以需要定义含不同的具体内容的方法,来代表多种具体实现形式。多态通常是一个消息在不同的类中用不同的方法实现的。多态的实现是由消息的接收者确定一个消息应如何解释,而不是由消息的发送者确定,消息的发送者只需要指导另外的实例可以执行一种特定操作即可。Java中提供两种多态机制:方法重载与方法重写。第6章拓展训练:6.1.1.产生三个随机数。classRandomTest{publicstaticvoidmain(Stringargs[]){System.out.println("Math.random()="+Math.random());System.out.println("Math.random()="+Math.random());System.out.println("Math.random()="+Math.random());}}6.1.2使用Integer类,返回返回保存指定的String的值的Integer对象。publicclassIntTest2{publicstaticvoidmain(String[]args){inti=Integer.valueOf("100").intValue();System.out.println(i);}}6.1.3利用Float类的方法进行数据类型转换,把float型转换为doublepublicclassDoubleExample{publicstaticvoidmain(String[]args){floatf1=123.456f;FloatF1=newFloat(f1);doublea1=F1.doubleValue();intb1=F1.intValue();System.out.println("output:"+a1);System.out.println("output:"+b1);}}6.2.1计算距当前100天后的日期时间,并输出。importjava.util.*;classTestCalendar2{publicstaticvoidmain(String[]args){Calendarc1=Calendar.getInstance();intyear1=c1.get(Calendar.YEAR);intmonth1=c1.get(Calendar.MONTH);intday1=c1.get(Calendar.DAY_OF_MONTH);inthour1=c1.get(Calendar.HOUR);intminute1=c1.get(Calendar.MINUTE);System.out.println(year1+"年"+(month1+1)+"月"+day1+"日"+hour1+":"+minute1);c1.add(Calendar.DAY_OF_YEAR,100);intyear2=c1.get(Calendar.YEAR);intmonth2=c1.get(Calendar.MONTH);intday2=c1.get(Calendar.DAY_OF_MONTH);inthour2=c1.get(Calendar.HOUR);intminute2=c1.get(Calendar.MINUTE);System.out.println(year2+"年"+(month2+1)+"月"+day2+"日"+hour2+":"+minute2);}}6.2.2移除列表中索引在fromIndex(包括)和toIndex(不包括)之间的所有元素。importjava.util.ArrayList;publicclassTemp{publicstaticvoidmain(String[]args){ArrayListal=newArrayList(11);for(inti=0;i<10;i++){al.add("string"+(i+1));}printList(al);System.out.println("//insertoneelement");//1为你指定的位置al.add(1,"stringinsert");printList(al);System.out.println("//removeoneelement");al.remove(1);printList(al);}publicstaticvoidprintList(ArrayListal){//输出ArrayList的方法System.out.print("currentlist:|");for(inti=0;i<al.size();i++){System.out.print(al.get(i)+"");}System.out.println("|");}}6.2.3用Hashtable来检验随机数的随机性。importjava.util.*;classCounter{inti=1;publicStringtoString(){returnInteger.toString(i);}}classStatistics{publicstaticvoidmain(String[]args){Hashtableht=newHashtable();for(inti=0;i<10000;i++){//Produceanumberbetween0and20:Integerr=newInteger((int)(Math.random()*20));if(ht.containsKey(r))((Counter)ht.get(r)).i++;elseht.put(r,newCounter());}System.out.println(ht);}}6.2.4Map接口的使用importjava.util.*;publicclassMapDemo{publicstaticvoidmain(String[]args){Mapmap=newHashMap();map.put("1","value1");map.put("2","value2");map.put("3","value3");map.put("4","value4");System.out.println(map.get("1"));SetKeySet=map.KeySet();for(Iteratoriterator=KeySet.iterator();iterator.hasNext();)System.out.println(iterator.next());Collectionvalues=map.values();for(Iteratoriterator=KeySet.iterator();iterator.hasNext();)System.out.println(iterator.next());SetentrySet=map.entrySet();for(Iteratoriterator=KeySet.iterator();iterator.hasNext();)System.out.println(iterator.next());}}习题解答一、编程题1.将“2010-03-10”格式的日期字符串转换成“2010年03月10日参考程序:importjava.util.*;importjava.text.*;publicclassTestDateFormat{publicstaticvoidmain(String[]args){SimpleDateFormatsdf1=newSimpleDateFormat("yyyy-mm-dd");SimpleDateFormatsdf2=newSimpleDateFormat("yyyy年mm月dd日");try{Dated=sdf1.parse("2010-03-10");System.out.println(sdf2.format(d));}catch(Exceptione){System.out.println(e.getMessage());}}}2.使用Integer类,将字符串参数作为有符号的十进制整数进行解析并输出。publicclassIntTest3{publicstaticvoidmain(String[]args){inti=Integer.parseInt("99");System.out.println(i);}}第7章【7.1.1拓展训练】1、设计一个界面,使用一组按钮和一个标签组件,当单击按钮时,标签显示单击按钮上的文字内容。importjavax.swing.*;importjava.awt.event.*;importjava.awt.*;classCh71extendsJFrameimplementsActionListener{String[]str={"a","b","c","d","e", "f","g","h","i","j","k","l"}; JButton[]jbtn; JLabeljb=newJLabel(); publicCh71() { setLayout(newFlowLayout()); JButton[]jbtn=newJButton[12]; for(inti=0;i<12;i++) { jbtn[i]=newJButton(str[i]); add(jbtn[i]); jbtn[i].addActionListener(this); } Fontf=newFont("宋体",Font.BOLD,25);//创建字体对象 jb.setFont(f); add(jb); setTitle("拓展训练一"); setBounds(100,100,300,180); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } publicvoidactionPerformed(ActionEvente) {if(e.getSource()instanceofJButton){ JButtonjbt=(JButton)e.getSource(); jb.setText(""+jbt.getText()+"");} } publicstaticvoidmain(String[]args) { newCh71(); }}【7.2.1拓展训练】1、界面上放置一个按钮和标签,当单击按钮时,标签显示单击按钮的次数。importjava.awt.event.*;importjavax.swing.*;importjava.awt.*;publicclassCh72extendsJFrameimplementsActionListener{JButtonbtn=newJButton("ok");JLabeljb=newJLabel("");intcount=0;publicCh72(){this.setLayout(newFlowLayout());this.add(jb);this.add(btn);this.setTitle("Hello!");btn.addActionListener(this);this.setBounds(100,100,230,180);this.setVisible(true);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}publicvoidactionPerformed(ActionEvente){count++; jb.setText("Youhaveclickedthebutton"+count+"times!");}publicstaticvoidmain(String[]args){newCh72();}}【7.2.2拓展训练】1、设计一个窗体,当窗体活动(即为当前窗体)时,窗体上显示“我在这里!哈哈!”;当窗体不活动时,窗体上不显示信息。importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;classActiveWinextendsJFrameimplementsWindowListener{ JLabeljlbl=newJLabel(); publicActiveWin(){ add(jlbl); addWindowListener(this);//注册监听器,监听本身setTitle("测试窗体事件"); setBounds(100,100,300,200); setVisible(true); }//实现接口中的方法windowActivated(),窗体是活动的publicvoidwindowActivated(WindowEvente){ jlbl.setText("我在这里!哈哈!"); this.repaint(); } //实现接口中的方法windowDeactivated(),窗体是不活动的 publicvoidwindowDeactivated(WindowEvente){ jlbl.setText("");this.repaint(); } publicvoidwindowDeiconified(WindowEvente){ } publicvoidwindowIconified(WindowEvente){ } publicvoidwindowOpened(WindowEvent
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度救生员水上乐园安全保障劳务合同范本
- 2025年度智能化节能改造项目合同能源管理大全
- 2025年度混凝土工程耐久性提升改造合同
- 2025年度建筑企业内部承包合同工程款支付方式
- 2025年度公交车身广告位租赁合同范本
- 2025年度城市轨道交通施工合同范本说明
- 2025年度公园景观照明系统租赁合同
- 2025年度环保型建筑用混凝土原材料供应合同
- 2025年度建筑废弃物处理材料租赁与环保合同
- 2025年度涵洞工程绿色施工合同
- GB 1886.114-2015食品安全国家标准食品添加剂紫胶(又名虫胶)
- 初二上册期末数学试卷含答案
- envi二次开发素材包-idl培训
- 2022年上海市初中语文课程终结性评价指南
- 西门子starter软件简易使用手册
- 2022注册电气工程师专业考试规范清单汇总
- 隧道施工监控量测方案及措施
- 桂花-作文ppt-PPT课件(共14张)
- 配电房日常检查记录表.docx
- 高一数学概率部分知识点总结及典型例题解析 新课标 人教版 必修
- 铁路运费计算方法
评论
0/150
提交评论