Java语言程序设计课后习题答案全集Word格式文档下载.docx
《Java语言程序设计课后习题答案全集Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《Java语言程序设计课后习题答案全集Word格式文档下载.docx(85页珍藏版)》请在冰豆网上搜索。
![Java语言程序设计课后习题答案全集Word格式文档下载.docx](https://file1.bdocx.com/fileroot1/2022-12/12/63bd0830-9466-44c4-ad19-32ef791ed6e4/63bd0830-9466-44c4-ad19-32ef791ed6e41.gif)
字符型
char
2
a,我,ぽ
0~65535
整数类型
字节性
byte
12,13,45
-128~127
短整型
short
-32768~32767
整型
int
8
-2E31~2E31-1
长整型
long
0L
12L,13L,45L
-2E63~2E63-1
浮点类型
单精度浮点
float
4
0F
,
-10E38~-10E-38
10E-38~10E38
双精度浮点
double
0D
-10E308~-10E-308
10E-308~10E308
指出下列内容哪些是JAVA语言的整型常量,哪些是浮点数类型常量,哪些两者都不是。
整型常量:
4)0xABCL,8)003,10)077,12)056L
浮点数类型常量:
3)-1E-31,5).32E3113)0.,14).0
两者都不是:
1),2),6),7),9),11)
第二章运算和语句
Java的字符能参加算术运算吗?
可以。
(1)字符与整型数据运算,结果为整型数据,只能赋给整型变量,如果附给字符型变量会损失精度,需要强制类型装换;
(2)字符与字符运算,结果为字符型数据,可以直接赋给字符型或整型变量。
占字节多的变量能直接赋值给占字节少的变量么?
不能直接赋值,需要强制类型转换。
试用Java语言表达式描述以下数学计算式或逻辑条件:
1)
解:
V=3)**(r,3);
2)
R=/R1+R2);
3)
y=(x,5)+(x,3)+6;
4)
F=*M1*M2/(R*R);
5)
(x)/a*x+((π*x/2));
6)0<
a<
10
a>
0&
&
10
7)条件x=1与y=2有且只有一个成立.
(x==1&
y!
=2)||(x!
=1&
y==2)
设在求以下表达式之前,整型变量a的值是4,试指出在求了以下表达式之后,变量a、b和c的值。
1)
a=5;
b=16;
;
c=10
若一个数恰好等于它的因子之和,则这个数称为“完全数”。
编写程序求1000之内的所有完全数。
分析:
若一个自然数,它所有的真因子(即除了自身以外的约数)的和恰好等于它本身,这种数叫做完全数。
例如6=1+2+3;
28=1+2+4+7+14
程序运行结果:
/**
*@author段智敏
*/
publicclassWork2_6{
publicstaticvoidmain(String[]args){
StringresultString="
1000以内,完全数有:
"
;
*输入正整数n,输出由n行n列星号字符组成的三角形图案。
*@author段智敏
*/
publicclassWork2_8
{
publicstaticvoidmain(Stringargs[])
{
ScannerconsoleScanner=newScanner;
"
请输入正整数n:
);
Stringstr=();
intn=-1;
try
{
n=(str);
}
catch(NumberFormatExceptione)
"
输入非法字符,程序结束!
!
return;
if(n<
1)
输入的数不是正实数,程序结束!
else
for(inti=0;
i<
n;
i++)
{
for(intj=0;
j<
n-i-1;
j++)
{
"
"
}
for(intk=0;
k<
i+1;
k++)
*"
}
}
}
设有整型变量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;
求小于999的所有水仙花数。
源代码文件:
*求小于999的所有水仙花数
publicclassWork2_10
StringresultString=newString("
1000之前的所有水仙花数有:
....
*按公式计算:
e=1+1/1!
+1/2!
+1/3!
+1/4!
+......
publicclassWork2_12
intn=1000;
.
*圆周率计算
publicclassWork2_13
intnum=1000000;
例变量名
被实例方法,构造方法访问
类变量
直接分配内存
各个对象之间共享这段已经分配完的内存
对象名.类变量名;
类名.类变量名
被实例方法,类方法,构造方法访问
成员方法
实例方法
不分配入口地址
共享一个入口地址
对象名.实例方法名
实例变量、类变量,实例方法、类方法
类方法
直接分配入口地址
共享这个入口地址
对象名.类方法名;
类名.类方法名
类变量、类方法
子类能继承超类的哪些成员变量和方法?
同包继承
不同包继承(import进来的)
私有(private)
不继承
友好(缺省默认)
继承
受保护(protected)
共有(public)
子类在什么情况下能隐藏超类的成员变量和方法?
子类重载父类的成员变量、方法时候。
在子类中是否允许有一个方法和超类的方法名字相同,而类型不同?
不允许。
方法重写是指:
子类中定义一个方法,并且这个方法的名字、返回类型、参数个数、和类型与从父类继承的方法完全相同。
以下程序有什么错误?
类方法main()调用了类的实例变量,main方法是类方法,不能调用类的实例变量a,导致错误!
声明一个复数类Complex。
实现其基本功能。
复数类:
*复数类
publicclassComplex
privatedoublereal;
ength,而确定一个String对象的长度用对象名.length()
用toUpperCase()和toLowerCase()方法实现大小写转换
publicclassUpperAndLowerTest{
publicstaticvoidmain(Stringargs[]){
Strings1=("
ABCdefgHIJkhl123"
),s2,s3;
未转换时的字符串s1="
+s1);
bytet1[]=();
arrayInt[index]=i;
index++;
}
/**
*打印数组元素
publicStringprintArray()
Stringresult="
for(inti=0;
i<
;
i++)
if(arrayInt[i]!
=0)
result+=arrayInt[i]+"
returnresult;
publicstaticvoidmain(String[]args)
Work4_10w=newWork4_10(100);
编写实现从两个字符串中找出最长的相同字符列的代码。
*找出两个字符串中,最长的相同字符列
publicclassWork4_11
Stringstr1="
0000abcdef0000"
Stringstr2="
123ab4567cdef789abcdef"
Stringstr3=getLongSameString(str1,str2);
str1="
+str1);
str2="
+str2);
最长的相同字符串为:
+str3);
publicstaticStringgetLongSameString(Stringstr1,Stringstr2)
Stringtemp="
Stringsame="
StringlongSame="
for(inti=0;
i<
();
for(intj=i+1;
j<
=();
temp=(i,j);
if(temp)>
0)
same=temp;
if()<
())
{
longSame=temp;
}
}
returnlongSame;
整理字符串,将字符串的前导空白符和后随空白符删去,并将字符串中非空白字符之间的连接的多个空白符只保留一个,而去掉多余的空白符。
publicclassWork4_12
publicstaticvoidmain(Stringargs[]){
Stringstr="
ILoveYou"
str=();
StringTokenizers=newStringTokenizer(str);
StringnewStr="
while()){
newStr=newStr+"
+();
旧字符串:
+str);
处理后新字符串:
+newStr);
编写用数组实现大整数的类,提供大整数的加、减、乘等运算。
大整数类源文件:
*大整数类
publicclassMyBigInteger
/**能存储的最大位数*/
publicstaticfinalintMAXLENGTH=100;
/**正负号标识*/
privateintsignum=1;
/**实际存储用的数组*/
privateintdataArray[];
*将参数的十进制字符串表示形式转换为BigInteger。
*@paramval-要转换的十进制字符串表示形式。
publicMyBigInteger(Stringval)
(val);
*声明一个MAXLENGTH位的,空的大整数类
publicMyBigInteger()
dataArray=newint[];
*根据十进制字符串表示形式转换为MyBigInteger的数据
*@paramstr-十进制字符串表示形式。
publicvoidsetData(Stringstr)
intend=0;
signum=1;
if(0)=='
-'
)
signum=-1;
end=1;
intindex=0;
for(inti=()-1;
i>
=end;
i--)
dataArray[index++]=(i)));
();
*加法,返回其值为(this+val)的BigInteger。
*@paramval-将添加到此BigInteger中的值。
*@return-this+val
publicMyBigIntegeradd(MyBigIntegerval)
MyBigIntegerresult=newMyBigInteger();
if>
<
0)ubtract());
ength()<
().length())ength()==().length())oString().length();
*检查进位,做加法时检测
*@parami
privatevoidcarryBit(inti)
if(i<
-1)
[i+1]+=[i]/10;
[i]=[i]%10;
*检查借位,做减法时检测
privatevoidborrowBit(inti)
if[i]<
0)
[i]=[i]+10;
[i+1]--;
大整数类测试类源文件:
import*大整数测试类
publicclassTestBigInteger
Stringa="
Stringb="
57"
MyBigIntegerm1=newMyBigInteger(a);
MyBigIntegerm2=newMyBigInteger(b);
MyBigIntegerm3;
BigIntegerb1=newBigInteger(a);
import.*;
*创建一个有文本框和三个按钮的程序。
当按下某个按钮时,使不同的文字显示在文本框中。
publicclassWork5_7extendsJFrameimplementsActionListener
privatestaticfinallongserialVersionUID=1L;
privateJTextFieldtext;
privateJButtonbutton1,button2,button3,exit_button;
privateJPanelpanel;
publicWork5_7()
text=newJTextField(10);
button1=newJButton("
刘德华"
button2=newJButton("
张学友"
button3=newJButton("
蔡依林"
exit_button=newJButton("
退出"
(this);
panel=newJPanel();
(button1);
(button2);
(button3);
(newFlowLayout());
(text);
(panel);
(exit_button);
(300,200);
(true);
;
publicvoidactionPerformed(ActionEvente)
if()==exit_button)
(0);
());
newWork5_7();
编写一个有两个文本框的小应用程序,在第一个文本框输入英语单词,在第二个文本框会自动显示汉语解释;
在第一个文本框输入汉语单词,在第二个文本框中显示英语解释。
设英语单词表只有少许几个。
源文件:
publicclassWork5_8extendsJFrameimplementsActionListener,KeyListener
privateJTextFieldinput_English,input_Chinese;
privateJLabellabel1,label2;
privateJPanelpanel1,panel2;
privateString[]word_English={"
moon"
"
star"
sun"
};
*
publicclassWork5_9extendsJFrameimplementsActionListener
privateJLabelresult_label;
privateJTextAreainput_textArea;
privateJTextFieldshowResult_textField;
privateJButtonsum_button,average_button,clear_button;
privateJPanelpanelNorth,panelSouth;
publicWork5_9()
result_label=newJLabel("
请选择你的操作"
showResult_textField=newJTextField(12);
input_textArea=newJTextArea();
sum_button=newJButton("
求 和"
average_button=newJButton("
平均值"
clear_button=newJButton("
清空"
panelNorth=newJPanel();
panelSouth=newJPanel();
(sum_button);
(average_button);
(result_label);
(showResult_textField);
(clear_button);
(panelNorth,;
(newJScrollPane(input_textArea),;
(panelSouth,;
(newWindowAdapter()
publicvoidwindowClosing(WindowEvente)