java 实验2 类
共5道大题 最后一题为自动洗牌发牌系统
1) 编写一个类实现银行帐户的概念。包括的属性有:帐号、储户姓名、地址、存款余额,包括的方法有:存款、取款、查询、计算利息、累加利息等。
public class bank {
private int id;
private String name;
private String address;
private double money;
public bank()
{
this.id = 0;
this.name = "默认姓名";
this.address = "默认地址";
this.money = 0;
}
public String toString() {
return "bank [id=" + id + ", name=" + name + ", address=" + address + ", money=" + money + "]";
}
public bank(int id, String name, String address, int money) {
super();
this.id = id;
this.name = name;
this.address = address;
this.money = money;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public double getMoney() {
return money;
}
public void setMoney(double money) {
this.money = money;
}
/**
* 存款
*/
public void saving(int m,int y) {
double a=getMoney();
double tax=y*0.001*m;
setMoney(getMoney()+m+tax);
System.out.println("存款成功:"+a+"元 "+y+"年后--->"+getMoney()+"元");
}
/**
* 取款
*/
public void take(int m)
{
double a=getMoney();
if(getMoney()<0)
{
System.out.println("余额不足取款失败");
}
setMoney(getMoney()-m);
System.out.println("取款成功:"+a+"元--->"+getMoney()+"元");
}
}
2)编写一个类实现桌子的概念,包括的属性有长、宽、高和颜色,包括的方法有:计算体积、显示桌子信息、设置桌子颜色及长宽高。
public class desk {
private double length;
private double width;
private double height;
private String color; public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public double getLength() {
return length;
}
public void setLength(double length) {
this.length = length;
}
public double getWidth() {
return width;
}
public void setWidth(double width) {
this.width = width;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
} public desk(double length, double width, double height, String color) {
super();
this.length = length;
this.width = width;
this.height = height;
this.color = color;
}
public double V() {
return length*height*width;
}
@Override
public String toString() {
return "desk [length=" + length + ", width=" + width + ", height=" + height +", volume="+V()+ "]";
}
}
3)编写一个类实现一个圆,属性包括圆心、半径,方法主要包括显示的圆的信息、求面积等。圆心是Point类的对象,有两个属性x,y,代表横纵坐标。
public class circle {
private double r;
private double x;
private double y;
public double getR() {
return r;
}
public void setR(double r) {
this.r = r;
}
publ4ic double getX() {
return x;
}
public void setX(double x) {
this.x = x;
}
public double getY() {
return y;
}
public void setY(double y) {
this.y = y;
}
public circle(point p, double r) {
this.r = r;
this.x = p.getX();
this.y = p.getY();
}
public double area() {
return (double)((int)(Math.PI*Math.pow(r, 2)*100))/100; //保留两位小数
}
@Override
public String toString() {
return "circle [r=" + r + ", x=" + x + ", y=" + y + ", area=" + area() + "]";
}
}
圆心类
public class point {
private int x;
private int y;
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
public point(int x, int y) {
this.x = x;
this.y = y;
}
public point() {
this.x=0;
this.y=0;
}
}
4)设计一个扑克洗牌算法。将52张牌(不包括大、小王)用对象的形式表示,每张牌包括花色和大小。大小按如下序号排列:(2、3、4、5、6、7、8、9、10、J、Q、K、A), 花色为: ♠ 、♣、♥、♦ ,首先将扑克按顺序存放到一个一维数组中,然后按洗牌算法进行洗牌,最后,按东、南、西、北进行分发,显示扑克时将同一花色放在一起。
card类
public class card {
private String color;
private String num;
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public String getNum() {
return num;
}
public void setNum(String num) {
this.num = num;
}
@Override
public String toString() {
return "\t"+color+"-"+num;
}
}
具体算法代码:建牌库,洗牌,理牌
public class cards_test {
public static void main(String[] args) {
final int N=52,M=13;
card[] cards=new card[N];
card[] East=new card[M];
card[] West=new card[M];
card[] North=new card[M];
card[] South=new card[M];
for(int i=0;i<M;i++)
East[i]=new card();
for(int i=0;i<M;i++)
South[i]=new card();
for(int i=0;i<M;i++)
West[i]=new card();
for(int i=0;i<M;i++)
North[i]=new card();
String[] color= {"红桃","草花","红心","方片"};
String[] num= {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
for(int i=0;i<N;i++) {
cards[i]=new card();
cards[i].setNum(num[i%13]);
cards[i].setColor(color[i/13]);
}
System.out.println("洗牌前");
for(int i=0;i<N;i++) {
System.out.print(cards[i].toString());
if((i+1)%13==0)
System.out.println();
}
for(int i=0;i<N;i++) {
int index=(int)(Math.random()*10000)%52;
String temp=cards[i].getNum();
cards[i].setNum(cards[index].getNum());
cards[index].setNum(temp);
String co=cards[i].getColor();
cards[i].setColor(cards[index].getColor());
cards[index].setColor(co);
}
System.out.println("洗牌后");
String[] position= {"东:","西:","南:","北:"};
for(int i=0;i<N;i++) {
if(i%13==0)
System.out.print(position[i/13]);
if(i>=0&&i<=12)
East[i]=cards[i];
else if(i>=13&&i<=25)
South[i-13]=cards[i];
else if(i>=26&&i<=38)
West[i-26]=cards[i];
else
North[i-39]=cards[i];
System.out.print(cards[i].toString());
if((i+1)%13==0)
System.out.println();
}
System.out.print("理牌后(相同花色放一起)");
System.out.print("\n"+position[0]);
for(int j=0;j<4;j++)
for(int i=0;i<M;i++)
if(East[i].getColor().equals(color[j]))
System.out.print(East[i].toString());
System.out.print("\n"+position[1]);
for(int j=0;j<4;j++)
for(int i=0;i<M;i++)
if(West[i].getColor().equals(color[j]))
System.out.print(West[i].toString());
System.out.print("\n"+position[2]);
for(int j=0;j<4;j++)
for(int i=0;i<M;i++)
if(South[i].getColor().equals(color[j]))
System.out.print(South[i].toString());
System.out.print("\n"+position[3]);
for(int j=0;j<4;j++)
for(int i=0;i<M;i++)
if(North[i].getColor().equals(color[j]))
System.out.print(North[i].toString());
} }
java 实验2 类的更多相关文章
- Java实验1 - 类的继承(super)- 创建checkaccount继承account
笔记总结: /** 任务81: 继承性,(降低代码亢余度) * 1.class 子类A Extends 父类B,(private 的内容无法被继承) * 2. 方法可以覆盖(Overrides), 注 ...
- java实验作业类的定义与描述
1 //1三角形的定义与描述 2 package test; 3 4 public class sjx { 5 private double a,b,c; 6 7 public sjx(double ...
- Java实验四
20145113 Java实验四 快捷键 之前没怎么记ISDEA的快捷键,但是熟练使用快捷键可以带来很多的便利,于是先开始学习一些常用的快捷键,就采用它默认的快捷键,这样后期就不会出现冲突,一些and ...
- Java实验四和实验五
实验四 类的继承性和多态性 [开发语言及实现平台或实验环境] Windows2000 或XP,JDK1.6与Jcreator4.0 [实验目的] 1. 掌握OOP方式进行程序设计的方法, 2. 了 ...
- Java实验二20135104
课程:Java程序设计 班级: 1351 姓名:刘帅 学号:20135104 成绩: 指导教师:娄嘉鹏 实验日期:2 ...
- Java实验报告二:Java面向对象程序设计
Java实验报告二:Java面向对象程序设计 ...
- java实验一实验报告
Java实验报告一:Java开发环境的熟悉 ...
- Java实验五报告——TCP传输及加解密
一.实验内容 1.运行教材上TCP代码,结对进行,一人服务器,一人客户端: 2.利用加解密代码包,编译运行代码,一人加密,一人解密: 3.集成代码,一人加密后通过TCP发送: 注:加密使用AES或者D ...
- 20175212童皓桢 Java实验二-面向对象程序设计实验报告
20175212童皓桢 Java实验二-面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设 ...
随机推荐
- c# 各种tips
1.lock 类似于 java中的synchronized,对对象或代码块加上互斥锁. 2.c#中的lambda表达式, ForEach(x => f(n)) 3.c# 中的 something ...
- mac下自定义伪协议配置
之前查了很多资料,最近也在挖掘研究这方面的漏洞. windows的很简单,在注册表配置就好了,但是mac os 是unix的,没有注册表这么一说. 但是发现腾讯等配置了自定义等协议,例如:tencen ...
- php学习之if
<html> <head> <title>xxx</title> <style> #tian{ color:blue; float:left ...
- oracle10g Error in invoking target 'install' of makefile
oracle10g series error error in invoking target 'install' of makefile /u01/app/oracle/oracle/product ...
- Java微信公众平台开发(十四)【番外篇】--微信web开发者工具使用
转自:http://www.cuiyongzhi.com/post/58.html 为帮助开发者更方便.更安全地开发和调试基于微信的网页,微信推出了 web 开发者工具.它是一个桌面应用,通过模拟微信 ...
- 通过键盘上下键 JS事件,控制候选词的选择项
效果图 JS代码 //上下键 选择事件 searchBackgroud 为样式,只做标记,无实质样式,因为和其他样式不兼容,只能添加CSS $(document).keydown(function ( ...
- sql server生成递归日期、连续数据
WITH Date AS ( SELECT CAST('2008-08-01' AS DATETIME) da UNION ALL FROM Date WHERE da < '2008-08-2 ...
- java Web jsp和servlet的关系
JSP在本质上就是SERVLET,但是两者的创建方式不一样Servlet完全是JAVA程序代码构成,擅长于流程控制和事务处理,通过Servlet来生成动态网页很不直观JSP由HTML代码和JSP标签构 ...
- Leetcode:Regular Expression Matching分析和实现
题目大意是要求我们实现一个简单的正则表达式全匹配判断.其中正则表达式中只包含一般字符,以及全匹配字符.和变长字符*.其中.可以匹配一个字符,而*与前一个字符相关联,x*可以被看作任意多个x(0到正无穷 ...
- mask rcnn训练自己的数据集参考文章(推荐)
最近用Mask_RCNN训练模型,下面几篇文章提供了不少帮助,汇总出来,方便以后查找,并向几位博主老师表示感谢 https://blog.csdn.net/qq_29462849/article/de ...