JAVA课后习题答案.docx

上传人:b****6 文档编号:8331098 上传时间:2023-01-30 格式:DOCX 页数:59 大小:267.96KB
下载 相关 举报
JAVA课后习题答案.docx_第1页
第1页 / 共59页
JAVA课后习题答案.docx_第2页
第2页 / 共59页
JAVA课后习题答案.docx_第3页
第3页 / 共59页
JAVA课后习题答案.docx_第4页
第4页 / 共59页
JAVA课后习题答案.docx_第5页
第5页 / 共59页
点击查看更多>>
下载资源
资源描述

JAVA课后习题答案.docx

《JAVA课后习题答案.docx》由会员分享,可在线阅读,更多相关《JAVA课后习题答案.docx(59页珍藏版)》请在冰豆网上搜索。

JAVA课后习题答案.docx

JAVA课后习题答案

前言

学习网址

第一章Java语言基础

1.指出Java语言的主要特点和ava程序的执行过程。

答:

强类型。

编译和解释。

自动无用内存回收功能。

面向对象。

与平台无关。

安全性。

分布式计算。

多线程。

2.说出开发与运行Java程序的主要步骤。

答:

安装SUN的JDK,配置classpath

编写源文件。

编译。

运行。

3.如何区分应用程序和小应用程序。

答:

应用程序必须在一类中定义一个main()方法,该方法代表应用程序的入口。

小应用程序不必定义main()方法,但是必须继承applet类。

4.说出Java源文件的命名规则。

答:

和类命名规则一样,首字母大写。

5.选择一种上机环境,参照实例,编写一个输出“helloworld!

”字样的Java程序。

答:

选择SUN的IDE,用UltraEdit-32编写如下:

//HelloWorld.java

/**

*

这是第一个程序

*@author饶林

*@see

*/

classHelloWorld{

publicstaticvoidmain(String[]args){

System.out.println("HelloWorld!

");

}

}

6.Java用什么字符集?

共有多少个不同的字符?

答:

Java语言使用Unicode字符集,共有65535个字符。

7.Java语言标识符的命名规则是什么?

答:

由字母(包括英文字母、下划线、美元字符、文字字符)和数字字符组成。

限定标识符的第一个字符不能是数字。

8.Java有哪些基本的数据类型,它们的常量又是如何书写的?

答:

基本的数据类型也称为原始数据类型,是系统预先规定的一些常用类型。

它们是:

整数类型、浮点数(实数)类型、字符(文字)类型、逻辑类型(布尔型)。

9.指出下列内容那些事Java语言的整形常量,哪些是浮点数类型常量,那些两者都不是?

1)E-42)A4233)-1E-314)0xABCL5).32E316)0877)0xL

8)0039)0x12.510)07711)11E12)056L13)0.14).0

答:

整形常量:

4,5,6,8,10,12

浮点型:

1,3,9,13,14

两者都不是:

2,7,11

第二章运算和语句

1.Java字符能参加算术运算吗?

答:

能,例如char类型a自加后变b

2.占字节多的变量能直接赋给占字节少的变量吗?

答:

不能,需强制类型转换。

3.试用Java语言表达式描述以下数学计算式或逻辑条件:

1)

V=(4/3)*math.PI*math.pow(r,3);

2)R=1/(1/R1+1/R2)

原式

3)y=x5+x3+6

y=pow(x,5)+pow(x,3)+6;

4)F=M1M2/R2

F=M1*M2/R*R

5)

Math.sin(x)/ax+Math.cos(π*x/2)>0?

Math.cos(π*x/2):

-Math.cos(π*x/2);

6)0

a>0&&a<10

7)条件x=1与y=2有且只有一个成立

(x==1&&y!

=2)||(x!

=1&&y==2)

4.设再求以下表达式之前,整形变量a的值是4,试指出在求表达式之后变量a,b和c的值。

1)b=a*a++;

b=16,a=5;

2)c=++a+a;

c=10,a=5;

5.编写一个程序示意前缀++和后缀++的区别,前缀—和后缀—的区别。

答:

领悟第四题完全就可以理解前缀++后缀++

--亦如此。

6.若一个数恰好等于它的因子之和,则这个数称为“完全数”。

编写程序求1000之内的所有完全数。

解析:

什么是数的因子?

因子就是所有可以整除这个数的数,但是不包括这个数自身.

//HelloWorld.java

/**

*

这是第二个程序

*@author饶林

*@see

*/

publicclassPraxis2_6{

publicstaticvoidmain(String[]args){

inti,j,sum;

for(i=1;i<=1000;i++){

//sum归0必须在此处

sum=0;

for(j=1;j<=i/2;j++){

if((i%j)==0)

sum=sum+j;

}

if(i==sum)

System.out.print(i+"");

}

}

}

7.编写输入正实数x,求平方不超过x的最大正整数n,并输出。

解析:

/**

*

这是第三个程序

*@author饶林

*@see

*/

importjava.util.*;

publicclassPraxis2_7

{

publicstaticvoidmain(String[]args)

{

ScannerconsoleScanner=newScanner(System.in);

System.out.print("请输入正实数X:

");

intx=consoleScanner.nextInt();

inty=(int)(Math.sqrt(x));

System.out.println("n="+y);

}

}

8.输入正整数n输出n行n列星号字符组成三角图案。

/**

*

这是第四个程序

*@author饶林

*@see

*/

importjava.util.*;

publicclassPraxis2_8{

publicstaticvoidmain(String[]args){

ScannerconsoleScanner=newScanner(System.in);

System.out.print("请输入正整数x:

");

intx=consoleScanner.nextInt();

for(inty=0;y

for(intm=x-y-1;m>0;m--){

System.out.print("");

}

for(intn=0;n

System.out.print("*");

}

System.out.println();

}

}

}

9.设有整形变量x和y的值分别为5和110.指出执行了下列语句后,变量x和y后的值分别是多少?

1)while(x<=y)x*=2;

X=160,y=110;

2)do{x=y/x;y=y-x;}while(y>=1);

X=18,y=0;

10.水仙花数是一个n(>=3)位的数,它等于每个数字的n次幂之和。

例如,153是一个水仙花数,153=13+53+33,是编写一个程序,求小于999的所有水仙花数。

/**

*

这是第五个程序

*@author饶林

*@see

*/

publicclassPraxis2_10{

publicstaticvoidmain(String[]args){

intx,y,z;

for(intm=100;m<999;m++){

x=m/100;

y=(m%100)/10;

z=(m%100)%10;

if(m==x*x*x+y*y*y+z*z*z)

System.out.print(m+"");

}

}

}

11.编程序解百鸡问题:

鸡翁一,值钱五,鸡母一,值钱三,鸡邹三,值钱一,百钱买百鸡,求鸡翁,鸡母,鸡邹各几何?

/**

*

这是第六个程序

*@author饶林

*@see

*/

publicclassPraxis2_11

{

publicstaticvoidmain(Stringargs[])

{

for(inti=0;i<=100;i++)

for(intj=0;j<=100;j++)

for(intk=0;k<=100;k+=3)//鸡雏的个数必须使3的倍数

{

if(((5*i+3*j+k/3)==100)&&(i+j+k==100))

System.out.println("鸡翁:

"+i+";鸡母:

"+j+";鸡雏:

"+k);

}

}

}

12.编写程序,按下面的公式计算自然对数底e的值:

e=1+1/1!

+1/2!

+1/3!

......

/**

*

这是第七个程序

*@author饶林

*@see

*/

publicclassPraxis2_12

{

publicstaticvoidmain(Stringargs[])

{

intn=1000;//计算精度

doublee=1.0;

for(inti=1;i<=n;i++)

{

e=e+1.0/Praxis2_12.factorial(i);

}

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

}

staticdoublefactorial(inta)//计算阶乘的静态方法

{

doublef=1.0;

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

f=f*j;

returnf;

}

}

13.编写程序,用如下公式计算圆周率的近似值:

14.回文整数是正读反读相同的整数,编写一个程序,输入一个整数,判断是否为回文整数。

/**

*

这是第八个程序

*@author饶林

*@see

*/

importjava.util.*;

publicclassPraxis2_14//输入整数,判断是否是回文整数

{

publicstaticvoidmain(Stringargs[])

{

inta[]=newint[100];

inti=0;

booleanb=true;

ScannerconsoleScanner=newScanner(System.in);

System.out.print("请输入一个int型整数:

");

intx=consoleScanner.nextInt();

inttest=x;

while(test>0)//把整数的各个位上的数存到数组里

{

a[i]=test%10;

test=test/10;

i++;

}

for(intj=0;j

{

if(a[j]!

=a[i-j-1])

{

b=false;

break;

}

}

if(b)System.out.println(x+"是回文整数");

elseSystem.out.println(x+"并不是回文整数");

}

}

15.草地上有一堆野果,有一只猴子每天要吃掉一半又一个,五天后刚好吃完,问有多少个,猴子每天吃多少个?

/**

*

这是第九个程序

*@author饶林

*@see

*/

publicclassPraxis2_15{

publicstaticvoidmain(String[]args){

intday,x1,x2;

day=5;x2=0;

while(day>0){

x1=(x2+1)*2;

x2=x1;

day--;

}

System.out.println("共有"+x2+"个桃子。

");

System.out.println("----------------------------");

for(inti=1;i<6;i++){

inteast;

east=x2/2+1;

x2=x2/2-1;

System.out.println("第"+i+"天吃"+east+"个。

");

}

System.out.println("----------------------------");

}

}

第三章面向对象编程基础

1.什么是面向对象技术?

它有什么优点?

答:

程序设计者考虑的是对象的描述,对象间的关系,类的管理、什么时候什么地方调用对象的那一种方法。

最大的优点是面向对象编程能有效地支持重用,是超大规模的程序也变得相对容易维护。

2.面向对象的程序设计与面向过程的程序设计有什么区别?

答:

面向过程的语言编程编程模式是:

程序=数据结构+算法

编程时需要考虑的是程序做什么,怎么做,重点考虑每个实现的细节。

面向对象的编程模式:

程序=对象+消息

程序设计者考虑的是对象的描述、对象间的关系、类的管理、什么时候和什么地方调用对象的那一种方法。

3.在程序中对象有什么区别?

答:

类是对同一种对象的描述,类概括了同类对象的共有性质:

数据和方法。

类的每个对象都有自己的标识,但它们具有相同的一组属性和提供相同的一组方法。

4.举例说明类方法和实例方法,以及类变量和实例变量的区别。

什么情况下用实例变量?

什么情况下用类变量?

答:

一般静态的数据和方法使用类变量。

5.子类能继承超类的那些成员变量和方法?

超类

子类

Private

No

(默认)

Yes

Protect

Yes

Public

Yes

6.子类在什么情况下能隐藏超类的成员变量和方法?

答:

重写

7.在子类中是否允许有一个方法和超类的方法名字相同,而类型不同?

答:

不应许,子类中定义一个方法,并且这个方法的名字、返回类型、参数个数、和类型与从父类继承的方法完全相同。

例如:

classR{

intadd(){

inta=2;

returna++;

}

}

publicclassRRextendsR{

floatadd(){

floata=2.0;

returna;

}

publicstaticvoidmain(String[]args){

System.out.println(add());

}

}

8.试说出对象、类、继承和多态性的概念。

9.略

10.接口与抽象类的区别。

答:

抽象类:

whatcanIdo?

接口:

Icandoit.

例子:

就像铁门木门都是门(抽象类),你想要个门我给不了(不能实例化),但我可以给你个具体的铁门或木门(多态);而且只能是门,你不能说它是窗(单继承);一个门可以有锁(接口)也可以有门铃(多实现)。

门(抽象类)定义了你是什么,接口(锁)规定了你能做什么(一个接口最好只能做一件事,你不能要求锁也能发出声音吧(接口污染))。

11.指出Applet的程序结构及各方法的作用。

答:

JavaAPI的Applet类为您提供设计applet程序外观并管理其动作时所需要的支持。

该类提供一种叫做Panel(面板)的图形用户界面(GUI)组件以及大量方法。

要创建一个applet程序,就需要扩展该Applet类(或创建子类)并实现您所需要的外观和动作。

12.以下程序的错误:

Takecare.java:

5:

无法从静态上下文中引用非静态变量a

floatc=a+b;

^

13.试声明一个复数类Complex。

解析:

//样例大家扩展

classComplex{

doublea,b;

Complex(){}

Complex(doublea,doubleb){

this.a=a;

this.b=b;

}

publicStringPrint(){

Stringresult=newString(this.a+(b>0?

"+":

"")+(b!

=0?

this.b+"i":

""));

returnresult;

}

publicComplexadd(Complexval){

Complexresult=newComplex();

result.a=this.a+val.a;

result.b=this.b+val.b;

returnresult;

}

}

publicclassTestComplex{

publicstaticvoidmain(String[]args){

Complexcomplex1=newComplex(1.0,2.0);

Complexcomplex2=newComplex(2.0,3.0);

System.out.println(complex1.add(complex2).Print());

}

}

第四章数组和字符串

1.举例说明如何声明、创建初始化数组。

答:

有三种方法。

书P69,不一一举例了。

2.略

3.一个数组能存储不同类型的元素吗?

答:

不能。

4.编写一个Java程序,形成以下形式的二维数组,并输出。

解析:

publicclassArry{

publicstaticvoidmain(String[]args){

int[][]a={{1,2,9,10,25},

{4,3,8,11,24},

{5,6,7,12,23},

{16,15,14,13,22},

{17,18,19,20,21}};

for(inti=0;i

for(intj=0;j

if(a[i][j]<10){

System.out.print(""+a[i][j]+"");

}else

System.out.print(a[i][j]+"");

}

System.out.println();

}

}

}

5.Java中字符数组与字符串有什么区别?

答:

数组是一个容器。

6.确定一个字符数组长度与确定一个Sting对象的长度有什么区别?

答:

确定字符数组的长度用属性length,而String对象用方法length()。

7.String类的方法转换。

解析:

publicclassConvert{

publicstaticvoidmain(String[]args){

Stringa="StrIng";

System.out.println(a.toUpperCase());

System.out.println(newString(a.toLowerCase()));

}

}

8.使用String类的concat方法:

例:

publicclassTestConcat{

publicstaticvoidmain(String[]args){

Stringa=newString("raoliv->");

Stringb=newString("");

System.out.println(a.concat(b));

}

}

9.试利用java.util.Date类继承声明实现MyDate类。

解析:

10.略

11.编写实现从两字符串找出最长的相同字符序列的代码。

解析:

得到字符串str1,str2后,有一个为空则子列为空。

如果都不为空,开始下面的步骤。

求得两列的长度分别为n1,n2。

动态生n2行n1列矩阵(二维数组)。

取str2中每个元素(记位置为i)与str1中元素(记位置为j)逐个比较,如果相等则为矩阵中相应行列坐标的元素赋值为1,否则为0(可用循环嵌套完成)。

比如str1(abc0cbad)str2(cba1abc)两串的话,可以得到如图所示矩阵。

然后,不难看出,要进行如下步骤。

定义strax,用来记录最大子列中元素个数。

定义数组l[n2],用来记录最大子列的首字符地址(因为可能有不同最大子列,故用数组,而不是单个变量)。

判断矩阵中每一个元素,是否为1,如果是则记下此时行地址到l数组,然后判断相对于这个元素的下一行下一列的元素是否为1,如果是则继续判断,一直到为0。

记下此次判断(即一个while循环)中“1”的个数n,存入变量strax。

对于矩阵中的每一个元素都这么判断,如果判断中n的值大于strax那么把n付给strax,同时把这个子列的首地址付给l[0],l[0]后面的元素全赋值为-1。

如果,某次判断得到的n与strax相同,即有相同最大子列,那么把它的首地址存入l数组的下一个位置。

当这个矩阵的每一个元素都判断完毕后,会得到strax,和数组l,然后用循环做如下输出过程:

依次以l数组中的每个元素为首地址,输出str2字符串中以相应序号开头的strax个字符,那么完成所有最大子列的输出。

例子:

输入:

aabcbcb

bcabcbac

输出:

abcb

publicclasstest1{

publicstaticvoidmain(String[]args){

intmax=0;

intcurrent=0;

Stringstr1=newString("aabcbcb");

Stringstr2=newString("bcabcbac");

intlen1=str1.length();

intlen2=str2.length();

intarr[][];

arr=newint[len1][len2];

//初始化数组

for(inti=0;i

for(intj=0;j

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 哲学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1