实验三 Java类编程Word格式.docx
- 文档编号:22047058
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:13
- 大小:100.48KB
实验三 Java类编程Word格式.docx
《实验三 Java类编程Word格式.docx》由会员分享,可在线阅读,更多相关《实验三 Java类编程Word格式.docx(13页珍藏版)》请在冰豆网上搜索。
/*实例化*/
Students2=newStudent();
2构造函数(形式,作用,如何调用)
1)与类同名,没有任何返回值void都不能写一般访问修饰符public
publicStudent(){
2)构造函数一般为了对对象属性赋初始值
publicStudent(Stringsno,Stringsname){
this.sno=sno;
this.sname=sname;
3)构造函数,当类实例化系统首先自动调用相应的构造函数.
Students1=newStudent();
//调用无形式参数构造函数
Students2=newStudent(95002,"
zhou"
);
//调用了形式参数为(String,String)构造函数
3属性set与get方法
/*设置属性的set与get方法*/
publicStringgetSno(){
returnsno;
publicvoidsetSno(Stringsno){
publicStringgetSname(){
returnsname;
publicvoidsetSname(Stringsname){
4、函数重载:
在一个类中,函数名称相同,但是形式参数的个数或形参类型不同,这样一组构成函数重载.
publicclassShape{
publicdoublearea(doubler){
returnMath.PI*r*r;
publicdoublearea(doublew,doubleh){
returnw*h;
publicdoublearea(doublea,doubleb,doublec){
doubles=(a+b+c)/2;
returnMath.Sqrt(s*(s-a)*(s-b)*(s-c));
3.4实践编程
1、基本类定义:
编写一个类,描述学生的学号、姓名、成绩。
学号用整型,成绩用浮点型,姓名用String类型。
使用构造函数给这些属性赋值。
并编写一个成员函数显示学生信息。
编写一个测试类,生成该类的一个对象,显示该学生信息。
packageEx3_1;
publicclassStudent{
privateintsno;
privatefloatscore;
publicStudent(intsno,Stringsname,floatscore){
this.sno=sno;
this.sname=sname;
this.score=score;
publicStringtoString(){//output
returnsno+"
"
+sname+"
+score;
publicintgetSno(){
returnsno;
publicvoidsetSno(intsno){
this.sno=sno;
returnsname;
this.sname=sname;
publicfloatgetScore(){
returnscore;
publicvoidsetScore(floatscore){
this.score=score;
}
publicclassTest{
publicstaticvoidmain(String[]args){
s1.setSno(20130001);
s1.setSname("
hhk"
s1.setScore(90.0f);
Students2=newStudent(20130002,"
xxx"
60.0f);
Students3=s2;
System.out.println(s1.toString());
System.out.println(s3.toString());
2、设计一个描述二维平面上点的类Point,该类需要描述点的横坐标和纵坐标,并提供属性的set/get访问器方法和计算两点间距离的方法。
写一个程序测试这个类
packageEx3_2;
publicclassPoint{
privateintx,y;
privatedoubles;
publicPoint(){
publicPoint(intx,inty){
this.x=x;
this.y=y;
publicintgetX(){
returnx;
publicvoidsetX(intx){
publicintgetY(){
returny;
publicvoidsetY(inty){
publicStringtoString(){
return"
("
+x+"
"
+y+"
)"
;
publicdoubledistance(Pointp1,Pointp2){
intx1=p1.getX();
inty1=p1.getY();
intx2=p2.getX();
inty2=p2.getY();
s=Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
returns;
Pointp1=newPoint(10,0);
Pointp2=newPoint(0,0);
doubles=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(doubler,doublei):
构造方法,创建复数对象的同时完成复数的实部、虚部的初始化,r为实部的初值,i为虚部的初值;
2)、getRealPart():
获得复数对象的实部;
3)、getImaginPart():
获得复数对象的虚部;
4)、setRealPart(doubled):
把当前复数对象的实部设置为给定的形式参数的数字;
5)、setImaginaryPart(doubled):
把当前复数对象的虚部设置为给定的形式参数的数字;
6)、complexAdd(Complexc):
当前复数对象与形式参数复数对象相加,所得的结果也是复数值,返回给此方法的调用者;
7)、complexMinus(Complexc):
当前复数对象与形式参数复数对象相减,所得的结果也是复数值;
8)、complexMulti(Complexc):
当前复数对象与形式参数复数对象相乘,所得的结果也是复数值;
编程实现这个类,并验证所编写的类能否正常使用。
packageEx3_3;
publicclassComplex{
privatedoubler;
privatedoublei;
publicComplex(){
publicComplex(doubler,doublei){
this.r=r;
this.i=i;
publicvoidsetRealPart(doubler){
publicdoublegetRealPart(){
returnr;
publicvoidsetImaginaryPart(doublei){
publicdoublegetImaginaryPart(){
returni;
publicComplexcomplexAdd(Complexc){
doubler1=this.r;
doublei1=this.i;
doubler2=c.r;
doublei2=c.i;
Complexc1=newComplex();
c1.setRealPart(r1+r2);
c1.setImaginaryPart(i1+i2);
returnc1;
publicComplexcomplexMinus(Complexc){
c1.setRealPart(r1-r2);
c1.setImaginaryPart(i1-i2);
publicComplexcomplexMulti(Complexc){
c1.setRealPart(r1*r2-i1*i2);
c1.setImaginaryPart(r1*i2+i1*r2);
returnr+"
+"
+i+"
i"
publicStringtoString1(){
+r+"
i)"
Complexc1=newComplex(4,3);
Complexc2=newComplex(6,2);
Complexc01=newComplex();
Complexc02=newComplex();
Complexc03=newComplex();
System.out.print(c1.toString()+"
System.out.println(c2.toString());
c01=plexAdd(c2);
c02=plexMinus(c2);
c03=plexMulti(c2);
System.out.println(c1.toString1()+"
+c2.toString1()+"
="
+c01.toString());
-"
+c02.toString());
*"
+c03.toString());
4、根据题目要求编写模拟洗牌的程序
请定义一个名为Card的扑克牌类,该类有两个private访问权限的字符串变量face和suit:
分别描述一张牌的牌面值(如:
A、K、Q、J、10、9、…、3、2等)和花色(如:
“黑桃”、“红桃”、“梅花”和“方块”)。
定义Card类中的public访问权限的构造方法,为类中的变量赋值;
定义protected访问权限的方法getFace(),得到扑克牌的牌面值;
定义protected访问权限的方法getSuit(),得到扑克牌的花色;
定义方法toString(),返回表示扑克牌的花色和牌面值字符串(如“红桃A”、“梅花10”等)。
【参考】
classCard{
privateStringface;
privateStringsuit;
publicCard(Stringf,Strings){
face=f;
suit=s;
protectedStringgetSuit(){
returnsuit;
protectedStringgetFace(){
returnface;
returnface+"
+suit;
}
若应用程序的main方法中,定义字符串数组f和s:
分别表示扑克牌的牌面值和花色;
定义52个元素的Card类型数组deck,用来存放4个花色的52张牌。
如下所示。
Stringf[]={"
A"
"
2"
3"
4"
5"
6"
7"
8"
9"
10"
J"
Q"
K"
};
Strings[]={"
黑桃"
红桃"
梅花"
方块"
Carddeck=newCard[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张牌
packageEx3_4;
publicclassCard{
publicCard(){
publicCard(Stringf,Strings){
face=f;
suit=s;
returnface+"
//洗牌
publicstaticvoidwashcard(Card[]deck){
Cardt;
inta,b;
for(intm=0;
m<
20;
m++){
a=rand();
b=rand();
t=deck[a];
deck[a]=deck[b];
deck[b]=t;
}
//随机数
publicstaticintrand(){
intt=(int)(Math.random()*52);
returnt;
//输出
publicstaticvoiddispArr(Card[]deck){
inta=0;
for(inti=0;
i<
deck.length;
i++){
if(a!
=0&
&
a%13==0)
System.out.println();
a++;
System.out.printf("
%-6s"
deck[i]);
String[]f={"
String[]s={"
Card[]deck=newCard[52];
intn=0;
for(inti=0;
s.length;
for(intj=0;
j<
f.length;
j++){
Cardw=newCard(s[i],f[j]);
deck[n]=w;
n++;
}
dispArr(deck);
System.out.println();
System.out.println("
Afterwash"
washcard(deck);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验三 Java类编程 实验 Java 编程