使用Hashtable來(lái)檢驗(yàn)隨機(jī)數(shù)的隨機(jī)性
大家好,我是Java進(jìn)階者。
一、使用Hashtable來(lái)檢驗(yàn)隨機(jī)數(shù)的隨機(jī)性
1.首先是創(chuàng)建Hashtable,使用for循環(huán)和定義一個(gè)產(chǎn)生隨機(jī)數(shù)的r,key值對(duì)應(yīng)隨機(jī)數(shù)的value值。
- import java.util.*;
- class Counter{
- int i =1;
- public String toString(){
- return Integer.toString(i);
- }
- }
- public class T12 {
- public static void main(String[] args) {
- Hashtable ht = new Hashtable();
- for (int i =0;i < 500; i++){
- Integer r = new Integer((int)(Math.random()*10));
- if(ht.containsKey(r)){
- ((Counter)ht.get(r)).i++;
- }
- else{
- ht.put(r, new Counter());
- }
- }
- System.out.println(ht);
- }
- }
運(yùn)行的結(jié)果如下所示:
二、 設(shè)計(jì)一個(gè)模擬銀行賬戶(hù)功能的類(lèi)Account
1.要求如下所示:
(a)屬性:賬號(hào)(card,字符串類(lèi)型)、儲(chǔ)戶(hù)姓名(name,字符串類(lèi)型)、地址(address,字符串類(lèi)型)、存款余額(balance,浮點(diǎn)型)、最低余額(minBalance,浮點(diǎn)型)
(b)方法:初始化所有屬性的構(gòu)造方法、存款(deposit方法)、取款(draw方法)、查詢(xún)(query方法)
要求:存款操作需顯示儲(chǔ)戶(hù)原有余額、將要存款數(shù)額及最終存款余額;取款時(shí),若最后余額小于最小余額,拒絕取款并顯示"取款失敗,至少保留余額XXX";查詢(xún)操作能顯示儲(chǔ)戶(hù)賬號(hào)、姓名、地址、存款余額及最低余額。
2.例子的實(shí)現(xiàn):
- public class Account {
- String card;//賬號(hào)
- String name;//姓名
- String address;//地址
- double balance;//存款余額
- static double minBalance;//最低余額
- Account(String card,String name,String address,double balance){
- this.card=card;
- this.name=name;
- this.address=address;
- this.balance=balance;
- Account.minBalance=5.0;
- }
- //存款方法
- public void deposit(double m){
- System.out.println("您賬戶(hù)余額:"+balance);
- System.out.println("存款數(shù)額 :"+m);
- balance+=m;
- System.out.println("最終存款余額:"+balance);
- }
- //取款(draw方法)
- public void draw(double m){
- double temp=balance-m;
- if(temp<minBalance){
- System.out.println("取款失敗,至少保留余額為"+minBalance);
- }else{
- balance=temp;
- }
- }
- //查詢(xún)方法
- public void query(){
- System.out.println("您的賬號(hào):"+card+"\n姓名:"+name+"\n地址:"+address+"\n存款余額:"+balance+"\n最低余額:"+minBalance);
- }
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- Account a=new Account("123456", "張三", "廣東省xx", 200.00);
- a.deposit(300.0);
- a.draw(200);
- a.query();
- }
- }
運(yùn)行的結(jié)果如下所示:

三、設(shè)計(jì)一個(gè)描述二維平面上點(diǎn)的類(lèi)Point
1.要求如下所示:
(a)該類(lèi)需要描述點(diǎn)的浮點(diǎn)型的橫坐標(biāo)x和縱坐標(biāo)y。
(b)提供能夠初始化橫縱坐標(biāo)的有參構(gòu)造方法,要求參數(shù)名稱(chēng)與屬性同名。
(c)計(jì)算兩點(diǎn)間距離的方法distance。
提示:兩點(diǎn)之間距離等于兩點(diǎn)橫縱坐標(biāo)之差的平方和再開(kāi)方Math類(lèi)中求平方根的方法:static double sqrt(double a)
2.例子的實(shí)現(xiàn):
- public class Point {
- double x,y;//橫坐標(biāo)x和縱坐標(biāo)y
- //有參數(shù)構(gòu)造方法
- Point(double x,double y){
- this.x=x;
- this.y=y;
- }
- //計(jì)算兩點(diǎn)間距離的方法distance
- double distance(Point a){
- double i=Math.pow((a.x-this.x), 2);
- double j=Math.pow((a.y-this.y), 2);
- double c=Math.sqrt(i+j);
- return c;
- }
- public static void main(String[] args) {
- Point p1=new Point(2,1);
- Point p2=new Point(1,1);
- double d=p1.distance(p2);
- System.out.print("兩點(diǎn)之間的距離為:"+d);
- }
- }
運(yùn)行的結(jié)果如下所示:
四、 數(shù)據(jù)類(lèi)型類(lèi)
1.數(shù)據(jù)類(lèi)型類(lèi):數(shù)據(jù)類(lèi)型類(lèi)也稱(chēng)為包裝類(lèi),它是封裝了基本的數(shù)據(jù)類(lèi)型。
如下圖所示:
2.數(shù)據(jù)類(lèi)型類(lèi)的常用方法
(a)對(duì)象名.intValue()是獲取對(duì)象的基本數(shù)據(jù)類(lèi)型例如int,float,char等。
(b)對(duì)象名.toString()是把基本數(shù)據(jù)類(lèi)型轉(zhuǎn)換成字符串。
(c)類(lèi)名.valueOf(String str)是把str轉(zhuǎn)換成對(duì)應(yīng)的數(shù)據(jù)類(lèi)型對(duì)象。
五、總結(jié)
設(shè)計(jì)一個(gè)模擬銀行賬戶(hù)功能的類(lèi)Account根據(jù)它的要求實(shí)現(xiàn)它的功能,掌握類(lèi)和對(duì)象編程。設(shè)計(jì)一個(gè)描述二維平面上點(diǎn)的類(lèi)Point根據(jù)要求實(shí)現(xiàn)功能,掌握構(gòu)造方法的使用。數(shù)據(jù)類(lèi)型類(lèi)也稱(chēng)為包裝類(lèi),它是封裝了基本的數(shù)據(jù)類(lèi)型。