JAVA课后习题答案文档格式.docx
- 文档编号:21467368
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:59
- 大小:267.96KB
JAVA课后习题答案文档格式.docx
《JAVA课后习题答案文档格式.docx》由会员分享,可在线阅读,更多相关《JAVA课后习题答案文档格式.docx(59页珍藏版)》请在冰豆网上搜索。
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<
10
a>
0&
&
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
/**
这是第二个程序<
publicclassPraxis2_6{
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,并输出。
这是第三个程序<
importjava.util.*;
publicclassPraxis2_7
{
publicstaticvoidmain(String[]args)
{
ScannerconsoleScanner=newScanner(System.in);
System.out.print("
请输入正实数X:
);
intx=consoleScanner.nextInt();
inty=(int)(Math.sqrt(x));
n="
+y);
8.输入正整数n输出n行n列星号字符组成三角图案。
这是第四个程序<
publicclassPraxis2_8{
publicstaticvoidmain(String[]args){
ScannerconsoleScanner=newScanner(System.in);
请输入正整数x:
for(inty=0;
y<
x;
y++){
for(intm=x-y-1;
m>
0;
m--){
System.out.print("
for(intn=0;
n<
y+1;
n++){
*"
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的所有水仙花数。
这是第五个程序<
publicclassPraxis2_10{
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.编程序解百鸡问题:
鸡翁一,值钱五,鸡母一,值钱三,鸡邹三,值钱一,百钱买百鸡,求鸡翁,鸡母,鸡邹各几何?
这是第六个程序<
publicclassPraxis2_11
publicstaticvoidmain(Stringargs[])
for(inti=0;
i<
=100;
i++)
for(intj=0;
j<
j++)
for(intk=0;
k<
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!
......
这是第七个程序<
publicclassPraxis2_12
intn=1000;
//计算精度
doublee=1.0;
for(inti=1;
=n;
{
e=e+1.0/Praxis2_12.factorial(i);
System.out.println("
e="
+e);
staticdoublefactorial(inta)//计算阶乘的静态方法
doublef=1.0;
for(intj=1;
=a;
f=f*j;
returnf;
13.编写程序,用如下公式计算圆周率的近似值:
14.回文整数是正读反读相同的整数,编写一个程序,输入一个整数,判断是否为回文整数。
这是第八个程序<
publicclassPraxis2_14//输入整数,判断是否是回文整数
inta[]=newint[100];
inti=0;
booleanb=true;
请输入一个int型整数:
inttest=x;
while(test>
0)//把整数的各个位上的数存到数组里
a[i]=test%10;
test=test/10;
i++;
for(intj=0;
i;
j++)
if(a[j]!
=a[i-j-1])
{
b=false;
break;
}
if(b)System.out.println(x+"
是回文整数"
elseSystem.out.println(x+"
并不是回文整数"
15.草地上有一堆野果,有一只猴子每天要吃掉一半又一个,五天后刚好吃完,问有多少个,猴子每天吃多少个?
这是第九个程序<
publicclassPraxis2_15{
intday,x1,x2;
day=5;
x2=0;
while(day>
0){
x1=(x2+1)*2;
x2=x1;
day--;
共有"
+x2+"
个桃子。
----------------------------"
i<
6;
inteast;
east=x2/2+1;
x2=x2/2-1;
第"
+i+"
天吃"
+east+"
个。
第三章面向对象编程基础
1.什么是面向对象技术?
它有什么优点?
程序设计者考虑的是对象的描述,对象间的关系,类的管理、什么时候什么地方调用对象的那一种方法。
最大的优点是面向对象编程能有效地支持重用,是超大规模的程序也变得相对容易维护。
2.面向对象的程序设计与面向过程的程序设计有什么区别?
面向过程的语言编程编程模式是:
程序=数据结构+算法
编程时需要考虑的是程序做什么,怎么做,重点考虑每个实现的细节。
面向对象的编程模式:
程序=对象+消息
程序设计者考虑的是对象的描述、对象间的关系、类的管理、什么时候和什么地方调用对象的那一种方法。
3.在程序中对象有什么区别?
类是对同一种对象的描述,类概括了同类对象的共有性质:
数据和方法。
类的每个对象都有自己的标识,但它们具有相同的一组属性和提供相同的一组方法。
4.举例说明类方法和实例方法,以及类变量和实例变量的区别。
什么情况下用实例变量?
什么情况下用类变量?
一般静态的数据和方法使用类变量。
5.子类能继承超类的那些成员变量和方法?
超类
子类
Private
No
(默认)
Yes
Protect
Public
6.子类在什么情况下能隐藏超类的成员变量和方法?
重写
7.在子类中是否允许有一个方法和超类的方法名字相同,而类型不同?
不应许,子类中定义一个方法,并且这个方法的名字、返回类型、参数个数、和类型与从父类继承的方法完全相同。
例如:
classR{
intadd(){
inta=2;
returna++;
publicclassRRextendsR{
floatadd(){
floata=2.0;
returna;
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;
publicclassTestComplex{
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{
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}};
a.length;
for(intj=0;
a[i].length;
if(a[i][j]<
10){
System.out.print("
+a[i][j]+"
}else
System.out.print(a[i][j]+"
5.Java中字符数组与字符串有什么区别?
数组是一个容器。
6.确定一个字符数组长度与确定一个Sting对象的长度有什么区别?
确定字符数组的长度用属性length,而String对象用方法length()。
7.String类的方法转换。
publicclassConvert{
Stringa="
StrIng"
System.out.println(a.toUpperCase());
System.out.println(newString(a.toLowerCase()));
8.使用String类的concat方法:
例:
publicclassTestConcat{
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{
intmax=0;
intcurrent=0;
Stringstr1=newString("
aabcbcb"
Stringstr2=newString("
bcabcbac"
intlen1=str1.length();
intlen2=str2.length();
intarr[][];
arr=newint[len1][len2];
//初始化数组
for(inti=0;
str1.length();
i++)
str2.length();
j
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 课后 习题 答案