实验三 Java类编程(I) 下载本文

public String toString(){ return \+x+\+y+\; }

public double distance(Point p1,Point p2){ int x1=p1.getX();int y1=p1.getY(); int x2=p2.getX();int y2=p2.getY();

s=Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); return s; }

}

package Ex3_2;

public class Test {

public static void main(String[] args) { Point p1=new Point(10,0); Point p2=new Point(0,0);

double s=p2.distance(p1,p2);

System.out.println(p1.toString()); System.out.println(p2.toString()); System.out.println(s); } }

3 定义一个复数类,可以通过构造函数给复数对象赋值,实部和虚部是该类的私有属性,必须有获取和修改属性的方法,并定义它与复数、实数相加和相减及复数间乘的方法。

复数类 Complex 的属性:

realPart :实部,代表复数的实数部分; imaginPart :虚部,代表复数的虚数部分; 复数类Complex 的方法:

1)、Complex (double r , double i ) :构造方法,创建复数对象的同时完成复数的实部、虚部的初始化,r为实部的初值,i为虚部的初值; 2)、getRealPart() :获得复数对象的实部; 3)、getImaginPart() :获得复数对象的虚部;

4)、setRealPart(double d ) :把当前复数对象的实部设置为给定的形式参数的数字; 5)、setImaginaryPart ( double d ) :把当前复数对象的虚部设置为给定的形式参数的数字;

6)、complexAdd(Complex c) :当前复数对象与形式参数复数对象相加,所得的结果也是复数值,返回给此方法的调用者;

7)、complexMinus(Complex c) :当前复数对象与形式参数复数对象相减,所得的结果也是复数值;

8)、complexMulti(Complex c) :当前复数对象与形式参数复数对象相乘,所得的结果也是复数值;

编程实现这个类,并验证所编写的类能否正常使用。

package Ex3_3;

public class Complex { private double r; private double i; public Complex(){ }

public Complex(double r , double i ){ this.r=r; this.i=i; }

public void setRealPart(double r){ this.r=r; }

public double getRealPart(){ return r; }

public void setImaginaryPart(double i){ this.i=i; }

public double getImaginaryPart(){ return i; }

public Complex complexAdd(Complex c){ double r1=this.r;double i1=this.i; double r2=c.r;double i2=c.i; Complex c1=new Complex();

c1.setRealPart(r1+r2);c1.setImaginaryPart(i1+i2); return c1; }

public Complex complexMinus(Complex c){ double r1=this.r;double i1=this.i; double r2=c.r;double i2=c.i; Complex c1=new Complex();

c1.setRealPart(r1-r2);c1.setImaginaryPart(i1-i2); return c1; }

public Complex complexMulti(Complex c){ double r1=this.r;double i1=this.i; double r2=c.r;double i2=c.i; Complex c1=new Complex();

c1.setRealPart(r1*r2-i1*i2);c1.setImaginaryPart(r1*i2+i1*r2); return c1; }

public String toString(){ return r+\+i+\; }

public String toString1(){ return \+r+\+i+\; }

}

package Ex3_3;

public class Test {

public static void main(String[] args) { Complex c1=new Complex(4,3); Complex c2=new Complex(6,2); Complex c01=new Complex(); Complex c02=new Complex(); Complex c03=new Complex();

System.out.print(c1.toString()+\); System.out.println(c2.toString()); c01=c1.complexAdd(c2); c02=c1.complexMinus(c2); c03=c1.complexMulti(c2);

System.out.println(c1.toString1()+\+c2.toString1()+\+c01.toString()); System.out.println(c1.toString1()+\+c2.toString1()+\+c02.toString()); System.out.println(c1.toString1()+\+c2.toString1()+\+c03.toString()); } }

4、根据题目要求编写模拟洗牌的程序

请定义一个名为Card的扑克牌类,该类有两个private访问权限的字符串变量face和suit:分别描述一张牌的牌面值(如:A、K、Q、J、10、9、…、3、2等)和花色(如:“黑桃”、“红桃”、“梅花”和“方块”)。定义Card类中的public访问权限的构造方法,为类中的变量赋值;定义protected访问权限的方法getFace(),得到扑克牌的牌面值; 定义protected访问权限的方法getSuit(),得到扑克牌的花色; 定义方法toString(),返回表示扑克牌的花色和牌面值字符串(如“红桃A”、“梅花10”等)。 【参考】

class Card {

private String face; private String suit;

public Card( String f, String s ) { face = f; suit = s; }

protected String getSuit(){ return suit; }

protected String getFace(){ return face; }

public String toString(){ return face + \ } }

若应用程序的main方法中,定义字符串数组f和s: 分别表示扑克牌的牌面值和花色;定义52个元素的Card类型数组deck,用来存放4个花色的52张牌。如下所示。 【参考】

String f[] = { \ String s[] = { \黑桃\红桃\梅花\方块\ Card deck = new Card[ 52 ];

1)、使用Card类的构造方法给deck数组的52张牌赋值,要求数组中先存放黑桃花色的A、2、3、…、K;然后是红桃花色的A、2、3、…、K;梅花花色的A、2、3、…、K;方块花色的A、2、3、…、K。请写出实现上述功能的程序段。要求每个牌不重复,但52张牌都有。

2)、请编写模拟洗牌的程序段,即把数组deck中的扑克牌随机打乱存放顺序。 【参考】可以使用随机函数每次交换两张牌,可以交换多次。要求输出四行,每行13张牌

package Ex3_4;

public class Card {

private String face; private String suit; public Card(){ }

public Card(String f,String s){ face = f; suit = s; }