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原则 了解设 ...
随机推荐
- 011. Python中*args, **kwargs 和 pass 和self 解释
*args, **kwargs →在python都表示可变参数, *args表示任意多个任意类型无名参数, 是一个元组; **kwargs表示关键字参数(key/value参数), 是一个字典,接收的 ...
- Py修行路 python基础 (五)三元运算 字符编码 元组 集合 三级菜单优化!
三元运算 条件判断不能加冒号: a=3 b=5 c=a if a<b else b oct() 转成八进制的简写:16进制 标志:BH为后缀或是0x为前缀hex() 转成16进制 元组 跟列表是 ...
- selenium 对浏览器的操控 java
driver.navigate().back(); 后退 driver.navigate().forward(); 前进 driver.navigate().refresh(); 刷 ...
- linux进行Java开发环境的部署
一.前言: 今天正式向linux开发进攻了,其中遇到一些问题简单的记录一下,为之后的再次部署提供方便. 二.linux的Java8安装的两种方法: 1.源安装很简单,一个命令搞定. sudo apt- ...
- SSH隧道技术简介
本文的受众如果你遇到了以下问题,那么你应该阅读这篇文章 我听说过这种技术,我对它很感兴趣 我想在家里访问我在公司的机器(写程序,查数据,下电影). 公司为了防止我们用XX软件封锁了它的端口或者服务器地 ...
- Base -快捷键|通配符|特殊符号|输出(正确与错误的保存)
curl + a 移动光标到行首. curl +e 移动光标到行尾. curl +k 剪切光标所在位置到行末的字符. curl+u 剪切光标所在位置到行首的字符. curl +y ...
- Angular24 树形菜单 ???
待更新... 2018年5月21日15:17:47 参考博文01 参考博文02
- Win10系统优化/设置脚本
Win10系统优化/设置脚本 用了很长时间win10了,用的过程中,发现了一些问题,关于系统基本的优化,和个人的使用习惯设置等等,做成了一个脚本,可以一键设置win10的系统设置,结合DWS对Win1 ...
- OS线程模型
线程模型 N对1 内核线程 映射 用户进程, 用户进程里可以启多个线程 1对1 内核线程和用户线程 1对1 Linux采用这种方式 N对M 用户线程被抽象为更轻量的线程, 内核线程和轻量的线程对应 进 ...
- 基于Nginx简单实现动静分离
1.首先安装Nginx 2.在Nginx.conf文件中添加如下配置: server{ listen 80; server_name www.lf.com; location ~ (.jpg|.png ...