1、第 2 章习题 4 角谷猜想:任何一个正整数 n,如果它是偶数则除以 2,如果是奇数则乘以 3 加上 1,这样得到一个新的整数,如继续进行上述处理,则最后得到的数一定是 1。编写应用程序和小程序分别证明:所有的 3 至 10000 的数都符合上述规则。*/ 程序清单/*方法 1:采用小程序*/import java.awt.*;import java.util.*;import java.applet.Applet;public class jiaogu extends Appletpublic void paint(Graphics g)int x,n,i=10;for(x=3;xtwo)?
2、one:two;showStatus(max+“ 较大!“);return true; /*第 2 章习题 6 编写一个程序模拟同时掷 2 个骰子。程序要用 Math.random( )模拟产生第一个骰子,然后再产生第二个骰子,将 2 个结果相加。和等于 7 的可能性最大,等于 2 和 12 的可能性最小。下图表示了出现 36 种情况组合。程序模拟掷 3600 次骰子,判断求和结果是否合理,共有 6 种情况的和是 7,故在 3600 次掷骰子的结果中应当有 1/6 的可能性是 7。1 2 3 4 5 61 2 3 4 5 6 72 3 4 5 6 7 83 4 5 6 7 8 94 5 6 7
3、 8 9 105 6 7 8 9 10 116 7 8 9 10 11 12*/ 程序清单/* * dice.java* 模拟掷骰子*/public class dice public static void main(String args) / The rate that numbers appeardouble result2;double result7;double result12;int n1, n2;int int1, int2;/ The times numbers appearint times2 = 0;int times7 = 0;int times12 = 0;for
4、 (int i = 0; i 1e-12)temp=(double)f(x,n) / factor(n);result += temp;n+;showStatus(“结果是: “+result);repaint();return true;/*第 3 章习题 7 编程:产生 20 个 int 类型的随机数,针对每个数使用 if-then-else 判断它是大于、小于或等于下一个数(注意:最后一个数不比较) 。*/ 程序清单/* * randAndComp.java*/public class randAndComp public static void main(String args) in
5、t array = new int20;for (int i = 0; i arrayi + 1)System.out.println(“The “+ i+ “ one(“+ arrayi+ “) is bigger than “+ (i + 1)+ “ one(“+ arrayi + 1+ “)“);else if (arrayi = 0;i-)System.out.print(array_tempi);public static void main(String args) reverseNumber temp = new reverseNumber(1234);temp.show();/
6、*第 4 章习题 2 定义一个复数类 complex,它的内部具有两个实例变量:realPart 和 imagPart,分别代表复数的实部和虚部,编程实现要求的数学运算。(1)实现两个复数相加。复数加运算的原则是:复数的实部和虚部分别相加。(2)实现两个复数相减。复数减运算的原则是:复数的实部和虚部分别相减。(3)输出运算结果,判断是否正确。*/ 程序清单/* * Complex.java*/public class Complex / real partprivate double realPart;/ imag partprivate double imagePart;/ default
7、initpublic Complex() this.realPart = 0.0;this.imagePart = 0.0;/ init with argumentspublic Complex(double real, double image) this.realPart = real;this.imagePart = image;/ show the complexpublic void show() if (this.realPart = 0.0) else if (this.realPart = 0.0)System.out.println(this.imagePart + “i“)
8、;else if (this.imagePart = 0.0)System.out.println(this.realPart);elseSystem.out.println(this.realPart + “+“ + this.imagePart + “i“);/ add two complexespublic void add(Complex x, Complex y) this.realPart = x.realPart + y.realPart;this.imagePart = x.imagePart + y.imagePart;/ sub two complexespublic vo
9、id sub(Complex x, Complex y) this.realPart = x.realPart - y.realPart;this.imagePart = x.imagePart - y.imagePart;public static void main(String arg) Complex c1 = new Complex(1, 2);Complex c2 = new Complex(2, 2);Complex c3 = new Complex();c1.show();c2.show();c3.add(c1, c2);System.out.print(“add : “);c
10、3.show();c3.sub(c1, c2);System.out.print(“sub : “);c3.show();/*第 4 章习题 3 定义一个圆类 circle,它有一个变量 radius(半径) 。从键盘输出数据,通过构造函数的参数传递给 radius,输出圆的周长和面积。但是,你必须确保输入的数据不为负数。*/ 程序清单/* * circle.java*/import java.awt.*;import java.applet.*;public class circle extends AppletTextField banjing;int r=0;round Circle;p
11、ublic void init()Label prompt;Circle=new round();prompt = new Label(“半径:“);banjing=new TextField(20); add( prompt );add( banjing );public void paint(Graphics g)Circle.setRound(r); g.drawString(“面积:“+Circle.area() ,50,80);g.drawString(“周长:“+Circle.lengthCircle() ,50,100);public boolean action(Event e
12、,Object o)if (e.target = banjing)r = Integer.parseInt( banjing.getText() );if(r 0return true;/ equalpublic boolean equal(IntegerSet arg) for (int i = 0; i size; i+)if (this.isIn(arg.seti) = false)return false;return true;/ is in?public boolean isIn(int arg) / empty IntergerSetif (this.isEmpty = true
13、)return false;for (int i = 0; i size; i+)if (arg = seti)return true;return false;/ print the IntegerSetpublic void print() System.out.print(“( “);for (int i = 0; i this.size; i+)System.out.print(this.seti + “ “);System.out.print(“)n“);/ for test/ mainpublic static void main(String args) IntegerSet t
14、1 = new IntegerSet();IntegerSet t2 = new IntegerSet();IntegerSet t3 = new IntegerSet();IntegerSet t4 = new IntegerSet();t1.InsertElement(30);t1.InsertElement(33);t1.InsertElement(38);System.out.println(“t1“);t1.print();t2.InsertElement(30);t2.InsertElement(32);t2.InsertElement(38);t2.InsertElement(4
15、3);t2.InsertElement(54);System.out.println(“t2“);t2.print();t3.MergeIntegerSets(t1, t2);t3.print();t4.IntersectIntegerSet(t1, t2);t4.print();/*第 4 章习题 6 写一个具有两个方法的基类 base,并在第一方法内调用第二方法。然后写一个派生类derived,并覆盖父类中的第二个方法。产生一个 derived 类对象,将它向上类型转换(即转换为 base类型) ,并调用第一个方法。验证并解释运行结果。*/ 程序清单/* * upCast.java*/cl
16、ass base public void method1() System.out.println(“method1 is invoked in base!“);System.out.println(“Call method2 !“);method2();public void method2() System.out.println(“method2 is invoked in base!“);class derived extends basepublic void method2()System.out.println(“method2 is invoked in derived!“);
17、public class upCast public static void main(String args) derived tmp = new derived();(base)tmp).method1();/*第 5 章习题 3编程证明:接口内的数据成员被自动设置为 static 和 final。*/ 程序清单/* * staticAndFinal.java*/interface interint x=2;class derived implements interpublic class staticAndFinalpublic static void main(String args
18、)inter in=new derived();/ in.x=100; / 不能赋值System.out.println(in.x+“ “+derived.x); /*第 5 章习题 4写一个类,它具有一个 protected 数据成员。在同一个文件内再写第二个类,在这个类内编写一个方法,以操作第一类内的 protected 数据。*/ 程序清单/* * NO5_4.java*/class class1protected int arg; class class2public void function1()/ System.out.println(class1.arg); / 不能操作该变量
19、System.out.println(“调用结束!“);public class NO5_4 public static void main(String args) class1 c1 = new class1();class2 c2 = new class2();c2.function1();/*第 5 章习题 5采用 public、private、protected 以及友员等成员创建一个类,然后定义这个类的一个对象。观察在访问所有类成员时会出现哪种类型的编译错误。*/ 程序清单/* * prove.java*/class Testpublic String pub;private St
20、ring pri;protected String prot;String fri;Test()this.pub = “public“;this.pri = “private“;this.prot = “protected“;this.fri = “friendly“;public class prove public static void main(String args) Test tmp = new Test();System.out.println(tmp.pub);System.out.println(tmp.pri);System.out.println(tmp.prot);Sy
21、stem.out.println(tmp.fri);/* result* * pri has private access in Test* * * 1 error*/*第 5 章习题 6写一个类,它具有 public、private、protected 以及友员等成员,将这个类存放在某个包中。在另外一个包内再写第二个类,在此类内编写一个方法,以操作第一类内的各数据,观察在访问所有类成员时会出现哪种类型的编译错误。*/该题与习题 5 类似,只要将习题 5 的 Test 类和主类分别存放在不同包中,即可验证。/*第 6 章习题 3编写一个采用随机函数生成句子的游戏。现有 4 个字符串数组:art
22、icle、noun、 verb、preposition,它们的内容分别是:the、a 、one 、some、any ; boy、girl 、dog、town、car ; drove、 jumped、ran、walked、skipped ; to、from、over、under 、on。依照句法要求:article + noun + verb + preposition + article + noun 产生 20 个句子。*/ 程序清单/* * sentence.java*/import java .util.* ;import java.awt.*;import java.applet.*;
23、public class sentence extends Applet Random r=new Random ();String list=“the“,“a“,“one“,“some“,“any“,“boy“,“girl“,“dog“,“town“,“car“,“drove“,“jumped“,“ran“,“walked“,“skiped“,“to“,“from“,“over“,“under“,“on“,“the“,“a“,“one“,“some“,“any“,“boy“,“girl“,“dog“,“town“,“car“;TextArea output;Button m;int b,c;
24、public void init() output=new TextArea(25,50);m=new Button(“开始“);add(output);add(m); public boolean action(Event e,Object o)output.setText (“);if(e.target=m)for(int i=0;i20;i+)output.appendText(i+1)+“ “);for(int j=0;j6;j+)c=(int)(5*r.nextFloat ();output.appendText(listjc)+“ “);output.appendText(“.n“);return true;/*第 6 章习题 4