使用Hashtable来检验随机数的随机性

开发 后端
设计一个模拟银行账户功能的类Account根据它的要求实现它的功能,掌握类和对象编程。设计一个描述二维平面上点的类Point根据要求实现功能,掌握构造方法的使用。

[[442212]]

大家好,我是Java进阶者。

一、使用Hashtable来检验随机数的随机性

1.首先是创建Hashtable,使用for循环和定义一个产生随机数的r,key值对应随机数的value值。

  1. import java.util.*; 
  2. class Counter{ 
  3.     int i =1; 
  4.     public String toString(){ 
  5.         return Integer.toString(i); 
  6. public class T12 { 
  7.     public static void main(String[] args) { 
  8.         Hashtable ht = new Hashtable(); 
  9.         for (int i =0;i < 500; i++){     
  10.             Integer r = new Integer((int)(Math.random()*10)); 
  11.             if(ht.containsKey(r)){ 
  12.                 ((Counter)ht.get(r)).i++; 
  13.             } 
  14.             else
  15.                 ht.put(r, new Counter()); 
  16.             } 
  17.         } 
  18.         System.out.println(ht); 

运行的结果如下所示:

二、 设计一个模拟银行账户功能的类Account

1.要求如下所示:

(a)属性:账号(card,字符串类型)、储户姓名(name,字符串类型)、地址(address,字符串类型)、存款余额(balance,浮点型)、最低余额(minBalance,浮点型)

(b)方法:初始化所有属性的构造方法、存款(deposit方法)、取款(draw方法)、查询(query方法)

要求:存款操作需显示储户原有余额、将要存款数额及最终存款余额;取款时,若最后余额小于最小余额,拒绝取款并显示"取款失败,至少保留余额XXX";查询操作能显示储户账号、姓名、地址、存款余额及最低余额。

2.例子的实现:

  1. public class Account { 
  2.     String card;//账号 
  3.     String name;//姓名 
  4.     String address;//地址 
  5.     double balance;//存款余额 
  6.     static double minBalance;//最低余额 
  7.     Account(String card,String name,String address,double balance){ 
  8.         this.card=card; 
  9.         this.name=name
  10.         this.address=address; 
  11.         this.balance=balance; 
  12.         Account.minBalance=5.0; 
  13.     //存款方法 
  14.     public void deposit(double m){ 
  15.         System.out.println("您账户余额:"+balance); 
  16.         System.out.println("存款数额 :"+m); 
  17.         balance+=m; 
  18.         System.out.println("最终存款余额:"+balance); 
  19.     //取款(draw方法) 
  20.     public void draw(double m){ 
  21.         double temp=balance-m; 
  22.         if(temp<minBalance){ 
  23.             System.out.println("取款失败,至少保留余额为"+minBalance); 
  24.         }else
  25.             balance=temp
  26.         } 
  27.     //查询方法 
  28.     public void query(){ 
  29.         System.out.println("您的账号:"+card+"\n姓名:"+name+"\n地址:"+address+"\n存款余额:"+balance+"\n最低余额:"+minBalance); 
  30.          
  31.     public static void main(String[] args) { 
  32.         // TODO Auto-generated method stub 
  33.         Account a=new Account("123456""张三""广东省xx", 200.00); 
  34.         a.deposit(300.0); 
  35.         a.draw(200); 
  36.         a.query(); 

运行的结果如下所示:

图片

三、设计一个描述二维平面上点的类Point

1.要求如下所示:

(a)该类需要描述点的浮点型的横坐标x和纵坐标y。

(b)提供能够初始化横纵坐标的有参构造方法,要求参数名称与属性同名。

(c)计算两点间距离的方法distance。

提示:两点之间距离等于两点横纵坐标之差的平方和再开方Math类中求平方根的方法:static double sqrt(double a)

2.例子的实现:

  1. public class Point { 
  2.     double x,y;//横坐标x和纵坐标y 
  3.     //有参数构造方法 
  4.     Point(double x,double y){ 
  5.         this.x=x; 
  6.         this.y=y; 
  7.     //计算两点间距离的方法distance 
  8.     double distance(Point a){ 
  9.         double i=Math.pow((a.x-this.x), 2); 
  10.         double j=Math.pow((a.y-this.y), 2); 
  11.         double c=Math.sqrt(i+j); 
  12.         return c; 
  13.     public static void main(String[] args) { 
  14.         Point p1=new Point(2,1); 
  15.         Point p2=new Point(1,1); 
  16.         double d=p1.distance(p2); 
  17.         System.out.print("两点之间的距离为:"+d); 
  18.   } 

运行的结果如下所示:

四、 数据类型类

1.数据类型类:数据类型类也称为包装类,它是封装了基本的数据类型。

如下图所示:

2.数据类型类的常用方法

(a)对象名.intValue()是获取对象的基本数据类型例如int,float,char等。

(b)对象名.toString()是把基本数据类型转换成字符串。

(c)类名.valueOf(String str)是把str转换成对应的数据类型对象。

五、总结

设计一个模拟银行账户功能的类Account根据它的要求实现它的功能,掌握类和对象编程。设计一个描述二维平面上点的类Point根据要求实现功能,掌握构造方法的使用。数据类型类也称为包装类,它是封装了基本的数据类型。

 

责任编辑:姜华 来源: Java进阶学习交流
相关推荐

2015-10-13 10:00:58

Swift随机数使用总结

2019-09-11 10:09:00

Java虚拟机算法

2009-12-02 17:01:01

PHP随机数rand()

2023-12-13 10:46:27

2016-01-21 09:55:51

2012-03-22 09:31:14

Java

2010-03-23 09:47:38

Python随机数Python随机字符串

2017-05-29 09:56:25

2011-07-08 15:11:03

JAVA

2021-06-01 22:31:57

区块链随机数技术

2010-03-11 12:48:25

Python生成随机数

2024-01-25 11:32:21

2010-10-09 15:35:25

MySQL rand函

2009-06-11 15:16:18

不重复随机数Java

2009-12-08 11:44:14

PHP获取随机数

2010-09-06 17:40:59

SQL函数

2010-07-15 13:34:32

Perl随机数

2009-12-08 12:58:33

PHP随机数类

2010-03-22 19:41:31

2019-12-26 14:07:19

随机数伪随机多线程
点赞
收藏

51CTO技术栈公众号