JAVA皮常德27章答案解析文档格式.docx
《JAVA皮常德27章答案解析文档格式.docx》由会员分享,可在线阅读,更多相关《JAVA皮常德27章答案解析文档格式.docx(27页珍藏版)》请在冰点文库上搜索。
![JAVA皮常德27章答案解析文档格式.docx](https://file1.bingdoc.com/fileroot1/2023-5/11/d92804b5-6a35-4630-9177-56826319b17c/d92804b5-6a35-4630-9177-56826319b17c1.gif)
if(j!
=1){
a=false;
break;
System.out.println(a);
}
运行结果:
true
小程序:
importjava.awt.*;
importjava.applet.*;
publicclassa5extendsApplet{
Labellab1;
TextFieldinput1;
intnum1=1;
publicvoidinit(){
lab1=newLabel("
任意输入3~10000的一个整数"
);
input1=newTextField(10);
add(lab1);
add(input1);
publicbooleanaction(Evente,Objecto){
num1=Integer.parseInt(input1.getText());
showStatus("
"
input1.setText("
repaint();
这个数是"
+num1);
returntrue;
publicvoidpaint(Graphicsg){
intxpos=50,ypos=50,i=0;
intxpos1=xpos;
while(num1!
=1)
{
if(num1%2==0){
num1=num1/2;
g.drawString(Integer.toString(num1),xpos,ypos);
num1=num1*3+1;
xpos=xpos+50;
i++;
if(i%5==0)
ypos=ypos+10;
xpos=xpos1;
2.
程序:
publicclassa6extendsApplet{
Labellab;
TextFieldinput;
inta,b,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12;
doublei2,i3,i4,i5,i6,i7,i8,i9,i10,i11,i12;
lab=newLabel("
输入次数"
input=newTextField(10);
add(lab);
add(input);
inttime=Integer.parseInt(input.getText());
input.setText("
模拟次数"
+time);
t2=t3=t4=t5=t6=t7=t8=t9=t10=t11=t12=0;
for(inti=1;
=time;
a=(int)(Math.random()*6+1);
b=(int)(Math.random()*6+1);
switch(a+b){
case12:
t12++;
case11:
t11++;
case10:
t10++;
case9:
t9++;
case8:
t8++;
case7:
t7++;
case6:
t6++;
case5:
t5++;
case4:
t4++;
case3:
t3++;
case2:
t2++;
i12=(double)t12/i;
i11=(double)t11/i;
i10=(double)t10/i;
i9=(double)t9/i;
i8=(double)t8/i;
i7=(double)t7/i;
i6=(double)t6/i;
i5=(double)t5/i;
i4=(double)t4/i;
i3=(double)t3/i;
i2=(double)t2/i;
//repaint();
g.drawString("
各种和的概率:
25,40);
12:
+i12,25,55);
11:
+i11,25,70);
10:
+i10,25,85);
9:
+i9,25,100);
8:
+i8,25,115);
7:
+i7,25,130);
6:
+i6,25,145);
5:
+i5,25,160);
4:
+i4,25,175);
3:
+i3,25,190);
2:
+i2,25,205);
三
一、实验内容:
1.采用循环语句打印如下图形:
**
****
******
********
2.编写一个applet,采用公式:
ex=1+x1/1!
+x2/2!
+……..+xn/n!
.
三、实验步骤:
1.程序:
packagecp3;
publicclassa1extendsApplet{
inta,b[]=newint[20],i,j;
输入数字"
a=Integer.parseInt(input.getText());
}
for(inti=0;
a!
=0;
b[i]=a%10;
a/=10;
for(j=0;
b[j]!
j++);
for(intt=--j;
t>
t--){
g.drawString(Integer.toString(b[t]),j*20-t*20,55);
for(i=0;
b.length;
b[i]=0;
****
******
********
**********
Labellab1,lab2;
TextFieldinput1,input2;
inta,b,i;
doublesum=0;
publicclassaa{
intmult(intn){
ints=1;
for(intj=1;
j<
=n;
j++)
s*=j;
returns;
输入x大小"
lab2=newLabel("
输入n值"
input2=newTextField(10);
add(lab2);
add(input2);
a=Integer.parseInt(input1.getText());
b=Integer.parseInt(input2.getText());
input2.setText("
sum=0;
aac=newaa();
=b;
sum+=(double)(Math.pow(a,i))/(double)c.mult(i);
结果为"
+sum);
输入x=1,n=30时的运行结果:
四
二、实验内容:
1.定义一个类,它包含了一个int类型的变量x、若干个构造函数(根据你的需要)和一个输出方法show(
)。
编程:
从键盘输入一个数,将这个数传递给这个类的x,采用方法show(
)逆序输出这个数。
2.定义一个整形集合类integerSet。
这种类型的对象可以存储10个20至80之间的整数,即它的内部有一个整形数组存储数据。
编程:
(1)
判断两个integerSet类对象S1和S2是否相等。
提示:
集合相等的前提是所有元素相等。
(2)
输出两个集合对象的交集。
(3)
输出两个集合对象的并集。
(4)
将一个整形数据插入到一个集合对象中。
(5)
从一个集合中删除某一个元素。
1.
程序
packagecp4;
classaa{
intx;
aa(intn){
x=n;
voidshow(){
intb=0;
for(;
x!
b=b*10+x%10;
x/=10;
System.out.println(b);
publicclassa1{
intvalue=CP4.readInt();
aaa1=newaa(value);
a1.show();
12345
54321
成功构建(总时间:
3秒)
packagecp4;
classinteger{
inta[]=newint[10];
publicvoidinput(){
inti;
=9;
a[i]=CP4.readInt();
if(a[i]==0)
break;
publicvoidoutput(){
System.out.print(a[i]);
System.out.print('
'
System.out.println();
classuninteger{
inta[]=newint[20];
=19;
classmeans{
inti,j;
publicbooleaneq(integera1,integera2){
if(a1.a[i]==0)
j++){
if(a2.a[j]==0)
if(i!
=j){
returnfalse;
if(a1.a[i]!
=a2.a[i])
publicvoidmix(integera1,integera2,integermix){
intt=0;
i++)
if(a1.a[i]==a2.a[j])
mix.a[t++]=a1.a[i];
elseif(a1.a[i]<
a2.a[j])
publicvoidunion(integera1,integera2,unintegerunion){
intt,s;
i=0;
for(s=0,t=0;
s<
=9&
&
t<
a1.a[s]!
=0&
a2.a[t]!
if(a1.a[s]<
a2.a[t]){
union.a[i++]=a1.a[s];
s++;
elseif(a1.a[s]>
union.a[i++]=a2.a[t];
t++;
t++;
if((a1.a[s]==0||s>
9)&
(t<
=0)){
)
union.a[i++]=a2.a[t++];
elseif((a2.a[t]==0||t>
(s<
union.a[i++]=a1.a[s++];
publicvoidinsert(integera1,inta){
if(i==10)
System.out.println("
此表已满不能插入"
if(a<
=a1.a[0]){
i>
=1;
i--){
a1.a[i]=a1.a[i-1];
a1.a[0]=a;
elseif(a>
=a1.a[i-1])
a1.a[i]=a;
;
if(a>
=a1.a[j]&
a<
=a1.a[j+1])
j+1;
a1.a[j+1]=a;
System.out.print("
插入后的表一变为:
a1.output();
publicvoiddelete(integera2,inta){
if(a2.a[i]==0)
if(a2.a[a]==0)
所删位置无元素"
for(j=a;
i;
a2.a[j]=a2.a[j+1];
删除后的表二变为:
a2.output();
publicclassa5{
publicstaticvoidmain(String[]args){
booleanf;
inta,b;
integermix=newinteger();
unintegerunion=newuninteger();
integera1=newinteger();
integera2=newinteger();
请以从小到大顺序输入两组(每组个数小于11个)20~80之间的整数,分别以0,0结束"
a1.input();
a2.input();
System.out.print("
表一为:
表二为:
meansm1=newmeans();
f=m1.eq(a1,a2);
if(f)
两个集合相等"
else
两个集合不相等"
m1.mix(a1,a2,mix);
m1.union(a1,a2,union);
两个集合的交为:
mix.output();
两个集合的并为:
union.output();
请输入要插入表一的整数:
a=CP4.readInt();
m1.insert(a1,a);
请输入要删除表二元素的下标:
b=CP4.readInt();
m1.delete(a2,b);
**********************
请以从小到大顺序输入两组(每组个数小于11个)20~80之间的整数,分别以0,0结束
21
32
44
56
78
80
31
46
2132445678800000
31465680000000
两个集合不相等
568000000000
2131324446567880000000000000
21324446567880000
所删位置无元素
1分钟38秒)
五
三、实验内容
1.写一个类,它具有一个protected数据成员。
在同一个文件内再写第二个类,在这个类内编写一个方法,
以操作第一类内的protected数据;
2.采用public、private、protected以及友员等成员创建一个类,然后定义这个类的一个对象。
观察在访问所有类成员时会出现哪种类型的编译错误。
三、实验步骤
1.程序
/*a4.java*/
packagecp5;
a4_2b=newa4_2();
b.datause();
/*a4_1.java*/
publicclassa4_1{
inta1=1;
publicinta2=1;
privateinta3=1;
protectedinta4=1;
/*a4_2.java*/
publicclassa4_2{
a4_1a=newa4_1();
publicvoiddatause()
data="
+a.a1);
publicdata="
+a.a2);
//System.out.println("
privitedata="
+a.a3);
//拒绝访问
protecteddata="
+a.a4);
运行结果;
data=1
publicdata=1
protecteddata=1
0秒)
2.程序:
classTest{
publicStringpub;
privateStringpri;
protectedStringprot;
Stringfri;
Test(){
this.pub="
public"
this.pri="
private"
this.prot="
protected"
this.fri="
friendly"
Test