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原则 了解设 ...
随机推荐
- python开发模块基础:序列化模块json,pickle,shelve
一,为什么要序列化 # 将原本的字典.列表等内容转换成一个字符串的过程就叫做序列化'''比如,我们在python代码中计算的一个数据需要给另外一段程序使用,那我们怎么给?现在我们能想到的方法就是存在文 ...
- Linux学习笔记 -- 目录与文件的管理
目录结构 Linux的目录结构为树状结构,最顶级的目录为根目录 “/”. 其他目录通过挂载可以将它们添加到树中,通过解除挂载可以移除它们. 在开始本教程前我们需要先知道什么是. 绝对路径与相对路径 绝 ...
- python学习(九) 魔法方法、属性和迭代器
9.1 准备工作 python 3.0的所有类都会隐式地成为object的子类. 9.2 构造方法 在python中创建一个构造方法:只要把init方法的名字修改为魔法版本__init__即可. &g ...
- MOS管防止电源反接的原理
[导读] 一般可以使用在电源的正极串入一个二极管解决,不过,由于二极管有压降,会给电路造成不必要的损耗,尤其是电池供电场合,本来电池电压就3.7V,你就用二极管降了0.6V,使得电池使用时间大减. ...
- Handler消息传送机制
一.什么是UI线程 当程序第一次启动的时候,Android会同时启动一条主线程( Main Thread). 主要负责处理与UI相关的事件. 二.UI线程存在的问题 出于性能优化考虑,Android的 ...
- Cocos2D中的内部函数
virtual bool isVisible(); // 是否可见 virtual void setVisible(bool visible); // 设置是否可见 boo ...
- java成神之——Stream和Optional
Stream流 基本使用 流关闭 平行流 流重用 iterator转换成流 分组计数 无限流 流转集合 压缩流 统计数值流 集合转换流遍历 流拼接 reduce 使用流生成随机字符串 流的包装流 几种 ...
- 程序实现DataGrid过滤设置
给gdv_pro.ActiveFilterString赋值就能直接控制DataGrid过滤 gdv_pro.ActiveFilterString语法: 最简单方式:gdv_pro.ActiveFilt ...
- 使用Fiddler对android应用抓http或https包
工作原理 先上个图 此图一目了然,可以看出fiddler在请求中所处的位置,我们就可以确定它能干些什么. WinInet(“Windows Internet”)API帮助程序员使用三个常见的Int ...
- 微信小程序中出现Invoking Page() in async task.问题
在做项目中需要让页面跳到外网,用到了<web-view src=""> </web-view>组件,需要新建一个文件放这个组件,调接口的时候链接连到这个页面 ...