当前位置:文档之家› 第二次实验

第二次实验

实验二类库的使用与编程实践实验2-1:编写数组复制的程序实验内容编程实现数组复制a=b,并对数组b中的元素进行修改时,输出数组a的结果。

运行后效果如图所示。

实验目的通过这个简单的实例让学生学习数组复制,并理解数组复制后对其中一个数组进行操作,对另一个数组的影响。

在Java中,将一个数组引用赋给另一个数组引用后,这两个数组引用将指向同一个数组对象。

若使用箭头表示数组引用,椭圆表示数组对象,则下图所示表示了这种情况。

实现思路两个引用a、b指向同一个数组对象,则通过一个引用修改,另一个引用能感知变化。

关键代码如下所示://创建了一维int数组对象,并让引用a指向该数组对象int[] a={1,2,3};//将a的值赋给b,让b也指向此数组对象int[] b=a;//通过引用b,将数组的第2个元素赋值为5b[1]=5;System.out.println("a[1]="+a[1]+", b[1]="+b[1]);int i1=2;int i2=i1;i2=i2+6;System.out.println("i1="+i1+", i2="+i2);实验2-2:改变String对象引用的指向实验内容编程实现声明字符串String类s1、s2,对其进行初始化后,令s2=s1.concat(s2),再输出s1、s2的内容。

运行后效果如图所示。

实验目的通过这个简单的实例让学生了解Java中String是不可变字符串类的含义。

在Java中字符串对象是永远不变的,其从创建的那一刻开始,内容将永远不会发生变化,也正是因为这一点,才保证了字符串对象可以复用。

但字符串对象引用的指向是可以发生变化的,这样在使用时也就感觉不到字符串是不能改变的了。

从本实验学生就可以理解String字符串不可变的含义。

实现思路分别创建字符串对象s1和s2。

将字符串s2的内容追加到字符串s1内容的后边组成新的内容,并查找字符串常量池中有没有与新内容相同的字符串。

若有,将引用s2指向该对象;若没有,则新创建一个包含新内容的字符串对象,并将引用s2指向该对象。

实现结果示意图如图所示。

关键代码如下所示://创建字符串对象s1与s2String s1="JavaSE6.0";String s2="核心技术大全";//将字符串s1与s2相连接并将结果赋给s2s2=s1.concat(s2);//打印字符串s1与s2System.out.println("对字符串s1进行连接字符串操作,字符串s1与s2的结果为:");System.out.println("s1 = "+s1);System.out.println("s2 = "+s2);实验2-3:使用迭代器完成遍历实验内容编程实现Student类,其包含成员变量name、age、classNum,并在主方法中新建初始化3个Student对象,并在屏幕上输出3个Student对象的属性值;为了简便起见,可以在Student类中改写方法toString。

运行后效果如图所示。

实验目的通过这个简单的实例让学生进一步学习理解迭代器的使用。

实际开发中,经常需要对集合中的所有元素进行遍历,对于List系列而言,可以利用元素的索引进行,而Set系列是没有索引的,这时就需要使用迭代器来完成遍历。

所有实现了Collection接口的类都有一个名称为iterator的方法来获取迭代器。

实现思路首先声明了用作元素的Student类,为了打印显示方便,重写了其toString方法。

在主方法中创建了一个HashSet对象,并向其中添加了5个Student类型的元素,最后用迭代器对HashSet中元素进行遍历。

关键代码如下所示:class Student{//学生的成员属性String name;int age;int classNum;//学生类的无参构造器public Student(){}//学生类的有参构造器public Student(String name,int age,int classNum){=name;this.age=age;this.classNum=classNum;}//重写toString方法public String toString(){//将类名引导的属性序列字符串返回return "\nwyf.jc.Student[name="++",age="+this.age+",classNum="+this.classNum+"]\n";}}//main主方法中//创建HashSet对象HashSet hs=new HashSet();//向HashSet 对象中添加内容不同的学生对象元素hs.add(new Student("tom",21,97005));hs.add(new Student("jerry",19,97003));hs.add(new Student("lucy",18,97004));//打印输出HashSet 中的内容System.out.println("这里是HashSet 操作前的内容:");System.out.println(hs);//获取集合对应的迭代器Iterator it=hs.iterator();//通过迭代器遍历集合,并修改元素的内容while(it.hasNext()){//对获取的元素引用进行强制类型转换Student temp=(Student)it.next();//修改元素的成员值temp.classNum=2003001;}//打印输出HashSet 中的内容System.out.println("这里是HashSet 操作后的内容:");System.out.println(hs);实验2-4:递归实验内容 用迭代法编程求a 的值,求平方根的迭代公式为)(211nn n x a x x +=+,要求前后两次求出的x 的差的绝对值小于10-7。

实验目的 通过这个简单的实例让学生进一步学习理解迭代器的使用。

实现思路关键代码如下所示:double a;double xn,xn1;final double eps=1e-7;InputStreamReader stdin=new InputStreamReader(System.in);BufferedReader bufin=new BufferedReader(stdin);System.out.print("请输入a 的值: ");a=Double.parseDouble(bufin.readLine());xn=a;xn1=(xn+a/xn)/2;while(Math.abs(xn1-xn)>=eps) {xn=xn1;xn1=(xn+a/xn)/2;}System.out.println(xn1);实验2-5:类的构造与APPLET实验内容编写一个完整的Java Applet 程序使用复数类Complex验证两个复数1+2i 和3+4i 相加产生一个新的复数4+6i 。

复数类Complex必须满足如下要求:(1) 复数类Complex 的属性有:RealPart : int型,代表复数的实数部分ImaginPart : int型,代表复数的虚数部分(2) 复数类Complex 的方法有:Complex( ) : 构造函数,将复数的实部和虚部都置0Complex( int r , int i ) : 构造函数,形参r 为实部的初值,i为虚部的初值。

Complex complexAdd(Complex a) : 将当前复数对象与形参复数对象相加,所得的结果仍是一个复数值,返回给此方法的调用者。

String ToString( ) : 把当前复数对象的实部、虚部组合成a+bi 的字符串形式,其中a 和b分别为实部和虚部的数据。

实验目的通过这个简单的实例让学生进一步学习类的构造和APPLET的使用。

实现思路复数类的关键代码如下所示:int RealPart ; // 复数的实部int ImaginPart ; // 复数的虚部Complex() { RealPart = 0 ; ImaginPart = 0 ; }Complex(int r , int i) {RealPart = r ; ImaginPart = i ; }Complex complexAdd(Complex a) {Complex temp = new Complex( ); // 临时复数对象temp.RealPart=RealPart+a.RealPart;temp.ImaginPart=ImaginPart+a.ImaginPart;return temp;}public String toString( ) {return ( RealPart+" + "+ImaginPart+" i ");}实验2-6:类的构造与APPLICATION实验内容编写一个Java程序,建立一个包含班级学生姓名的向量,然后在向量中超找某一个学生。

若找到,则输入信息“找到此人!”,否则,输出信息“查无此人!”。

实验目的通过这个简单的实例让学生进一步掌握向量的使用。

实现思路关键代码如下所示:class InputData {static private String s=””;static public void input() {BufferedReader br=new BufferedReader(new InputStreamReader(System.in));try{s=br.readLine();}catch(IOException e){}}static public String getString() {input();return s;}}class CFoundName {String[] Names={“Tom”,”Jack”,”Jim”,”Joan”,”Jill”};void fine(){Vector names=nwe Vector();String s;for(int i=0;i<Names.length;i++)names.add(Names[i]);System.out.print(“请输入一个姓名:”);s=InputData.getString();if(names.indexOf(s)!=-1)System.out.println(“找到此人!”);elseSystem.out.println(“查无此人!” );}}}。

相关主题