黑馬面試相關(guān)java技術(shù)總結(jié)date類、calendar和random_第1頁(yè)
黑馬面試相關(guān)java技術(shù)總結(jié)date類、calendar和random_第2頁(yè)
黑馬面試相關(guān)java技術(shù)總結(jié)date類、calendar和random_第3頁(yè)
黑馬面試相關(guān)java技術(shù)總結(jié)date類、calendar和random_第4頁(yè)
已閱讀5頁(yè),還剩6頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Random 類- android 培訓(xùn)、java 培訓(xùn)、期待與您交流! -java.util 包java.util 包是 Java 語(yǔ)言提供的工具類包,該包中包含了如日期、隨機(jī)數(shù)和數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)類等一系列的工具類實(shí)現(xiàn),是學(xué)習(xí) Java 語(yǔ)言的基礎(chǔ)包之一。本部分就以 Java 語(yǔ)言中常用的時(shí)間和日期處理、隨機(jī)數(shù)處理以及集合框架為基礎(chǔ)進(jìn)行介紹。時(shí)間和日期處理使用程序進(jìn)行時(shí)間和日期處理,是程序員必須的一種常用技能,在不同的程序設(shè)計(jì)語(yǔ)言中提供了不同的格式進(jìn)行實(shí)現(xiàn),現(xiàn)在就介紹一下 Java 語(yǔ)言中的實(shí)現(xiàn)方式,以及基本的應(yīng)用,使得對(duì)于 Java 語(yǔ)言的時(shí)間和日期處理技術(shù)有比較全面的認(rèn)識(shí)。在程序中,某個(gè)固定

2、的時(shí)間代表的都是一個(gè)時(shí)間點(diǎn),也就是一個(gè)時(shí)間的瞬間,例如 2009 年3 月 8 日 15 點(diǎn) 50 分 0 秒,在實(shí)際的應(yīng)用中,經(jīng)常需要對(duì)于兩個(gè)時(shí)間進(jìn)行比較或計(jì)算時(shí)間之間的差值,這些功能在 Java 語(yǔ)言中都可以很方便的實(shí)現(xiàn)。在 Java毫秒。在 Java語(yǔ)言中,時(shí)間的表達(dá)是毫秒。也就是說(shuō),Java 語(yǔ)言中的時(shí)間處理可以精確到語(yǔ)言中,表達(dá)時(shí)間的方式有兩種:絕對(duì)時(shí)間。以直觀的形式來(lái)表達(dá)某個(gè)時(shí)間點(diǎn),例如 2009 年 10 月 10 號(hào) 0 點(diǎn) 0 分 0 秒。使用這種形式表達(dá)時(shí)間,使用起來(lái)比較直觀,但是不方便進(jìn)行時(shí)間之間的計(jì)算。例如無(wú)法很直觀的計(jì)算 2020 年 1 月 1 號(hào) 0 點(diǎn) 0 分

3、0 秒和上面這個(gè)時(shí)間之間相差多少天。絕對(duì)時(shí)間以對(duì)象的形式進(jìn)行表達(dá),Java API 中提供了 java.util 包中的 Date 類和 Calendar 類的對(duì)象進(jìn)行表達(dá)。:相對(duì)時(shí)間。以一個(gè) long 型的數(shù)字表達(dá)某個(gè)時(shí)間點(diǎn)。例如 102847423468。使用這種方式的優(yōu)缺點(diǎn)和絕對(duì)時(shí)間剛好相反。這種方式很方便時(shí)間之間的計(jì)算,但是閱讀起來(lái)很不直觀。在Java API 中以需要表達(dá)的時(shí)間點(diǎn),例如 2009 年 10 月 10 號(hào) 0 點(diǎn) 0 分 0 秒,和 GMT(格時(shí)間,也就是倫敦時(shí)間)1970 年 1 月 1 號(hào) 0 點(diǎn) 0 分 0 秒之間相差的毫秒數(shù)作為相對(duì)時(shí)間的數(shù)值,如果該時(shí)間在這個(gè)時(shí)

4、間只好,則相對(duì)時(shí)間為正數(shù),否則相對(duì)時(shí)間為負(fù)數(shù)。Java API 中提供了 java.lang 包中的System 類的 currentTimeMillis 方法,獲得以相對(duì)時(shí)間形式描述的當(dāng)前系統(tǒng)時(shí)間。在實(shí)際使用時(shí),絕對(duì)時(shí)間和相對(duì)時(shí)間之間可以很方便的進(jìn)行轉(zhuǎn)換。Date 類在 JDK1.0 中,Date時(shí)間的類,但是由于 Date 類不便于實(shí)現(xiàn)類是唯一的一,所以從 JDK1.1 版本開(kāi)始,使用 Calendar 類進(jìn)行時(shí)間和日期處理。這里簡(jiǎn)單介紹一下Date 類的使用。:使用 Date 類代表當(dāng)前系統(tǒng)時(shí)間Date d = new Date();System.out.prln(d);使用 Date

5、類的默認(rèn)構(gòu)造方法創(chuàng)建出的對(duì)象就代表當(dāng)前時(shí)間,由于 Date 類覆蓋了 toString技術(shù)總結(jié)Date 類、Calendar 類和方法,所以可以直接輸出 Date 類型的對(duì)象,顯示的結(jié)果如下:Sun Mar 08 16:35:58 CST 2009在該格式中,Sun 代表Sunday(周日),Mar 代表 March(三月),08 代表 8 號(hào),CST 代表China Standard Time(中國(guó)標(biāo)準(zhǔn)時(shí)間,也就是:使用 Date 類代表指定的時(shí)間Date d1 = new Date(2009-1900,3-1,9);時(shí)間(東八區(qū))。System.out.prln(d1);使用帶參數(shù)的構(gòu)造方

6、法,可以構(gòu)造指定日期的Date 類對(duì)象,Date 類中年份的參數(shù)應(yīng)該是實(shí)際需要代表的年份減去 1900,實(shí)際需要代表的月份減去 1 以后的值。例如上面的示例代碼代表就是 2009 年 3象,和這個(gè)類似。:獲得 Date 對(duì)象中的信息Date d2 = new Date();/年份year = d2.getYear() + 1900;/月份month = d2.getMonth() + 1;/日期date = d2.getDate();/小時(shí)hour = d2.getHours();/分鐘minute = d2.getMinutes();/秒second = d2.getSeconds();/幾

7、day = d2.getDay();月 9號(hào)。實(shí)際代表具體的年月日時(shí)分秒的日期對(duì)System.out.pr System.out.pr System.out.pr System.out.pr System.out.pr System.out.prSystem.out.prln(年份: + year);ln(月份: + month);ln(日期: + date);ln(小時(shí): + hour); ln(分鐘: + minute); ln(秒: + second);ln(: + day);使用 Date 類中對(duì)應(yīng)的 get 方法,可以獲得 Date類對(duì)象中相關(guān)的信息,需要注意的是使用getYear

8、獲得是Date 對(duì)象中年份減去 1900 以后的值,所以需要顯示對(duì)應(yīng)的年份則需要在返回值的基礎(chǔ)上加上 1900,月份類似。在 Date 類中還提供了 getDay 方法,用于獲得 Date對(duì)象代表的時(shí)間是幾,Date 類規(guī)定周日是 0,周一是 1,周二是 2,后續(xù)的依次類推。:Date 對(duì)象和相對(duì)時(shí)間之間的互轉(zhuǎn)Date d3 = new Date(2009-1900,3-1,10); long time = 1290876532190L;/將 Date 類的對(duì)象轉(zhuǎn)換為相對(duì)時(shí)間long t = d3.getTime();System.out.prln(t);/將相對(duì)時(shí)間轉(zhuǎn)換為 Date 類的對(duì)象

9、 Date d4 = new Date(time); System.out.prln(d4);使用 Date 對(duì)象中的 getTime 方法,可以將 Date 類的對(duì)象轉(zhuǎn)換為相對(duì)時(shí)間,使用 Date 類的構(gòu)造方法,可以將相對(duì)時(shí)間轉(zhuǎn)換為 Date 類的對(duì)象。經(jīng)過(guò)轉(zhuǎn)換以后,既方便了時(shí)間的計(jì)算,也使時(shí)間顯示比較直觀了。Calendar 類從 JDK1.1 版本開(kāi)始,在處理日期和時(shí)間時(shí),系統(tǒng)使用 Calendar 類進(jìn)行實(shí)現(xiàn)。在設(shè)計(jì)上,Calendar 類的功能要比Date 類強(qiáng)大很多,而且在實(shí)現(xiàn)方式上也比 Date 類要復(fù)雜一些,下面就介紹一下 Calendar 類的使用。Calendar 類是一個(gè)

10、抽象類,在實(shí)際使用時(shí)實(shí)現(xiàn)特定的子類的對(duì)象,創(chuàng)建對(duì)象的過(guò)程對(duì)程序員來(lái)說(shuō)是透明的,只需要使用 getInstance 方法創(chuàng)建即可。:使用 Calendar 類代表當(dāng)前時(shí)間Calendar c = Calendar.getInstance();由于 Calendar 類是抽象類,且 Calendar 類的構(gòu)造方法是 protected 的,所以無(wú)法使用Calendar 類的構(gòu)造方法來(lái)創(chuàng)建對(duì)象,API 中提供了 getInstance 方法用來(lái)創(chuàng)建對(duì)象。使用該方法獲得的 Calendar 對(duì)象就代表當(dāng)前的系統(tǒng)時(shí)間,由于 Calendar 類toString 實(shí)現(xiàn)的沒(méi)有 Date 類那么直觀,所以直接

11、輸出 Calendar 類的對(duì)象意義不大。:使用 Calendar 類代表指定的時(shí)間 Calendar c1 = Calendar.getInstance(); c1.set(2009, 3 - 1, 9);使用 Calendar 類代表特定的時(shí)間,需要首先創(chuàng)建一個(gè) Calendar 的對(duì)象,然后再設(shè)定該對(duì)象中的年月日參數(shù)來(lái)完成。set 方法的為:public final void set(year,month,date)以上示例代碼設(shè)置的時(shí)間為 2009 年 3 月 9 日,其參數(shù)的結(jié)構(gòu)和 Date 類不一樣。 Calendar 類中年份的數(shù)值直接書(shū)寫(xiě),月份的值為實(shí)際的月份值減 1,日期的值

12、就是實(shí)際的日期值。如果只設(shè)定某個(gè)字段,例如日期的值,則可以使用如下 set 方法:public void set(field,value)在該方法中,參數(shù) field 代表要設(shè)置的字段的類型,常見(jiàn)類型如下:Calendar.YEAR年份 Calendar.MONTH月份 Calendar.DATE日期Calendar.DAY_OF_MONTH日期,和上面的字段完全相同 Calendar.HOUR12 小時(shí)制的小時(shí)數(shù) Calendar.HOUR_OF_DAY24 小時(shí)制的小時(shí)數(shù) Calendar.MINUTE分鐘Calendar.SECOND秒 Calendar.DAY_OF_K幾后續(xù)的參數(shù)va

13、lue 代表,設(shè)置成的值。例如:c1.set(Calendar.DATE,10);該代碼的作用是將c1 對(duì)象代表的時(shí)間期設(shè)置為 10號(hào),其它所有的數(shù)值會(huì)被重新計(jì)算,例如幾以及對(duì)應(yīng)的相對(duì)時(shí)間數(shù)值等。:獲得 Calendar 類中的信息Calendar c2 = Calendar.getInstance();/年份year = c2.get(Calendar.YEAR);/月份month = c2.get(Calendar.MONTH) + 1;/日期date = c2.get(Calendar.DATE);/小時(shí)hour = c2.get(Calendar.HOUR_OF_DAY);/分鐘min

14、ute = c2.get(Calendar.MINUTE);/秒second = c2.get(Calendar.SECOND);/幾day = c2.get(Calendar.DAY_OF_K);System.out.pr System.out.pr System.out.pr System.out.pr System.out.pr System.out.prSystem.out.prln(年份: + year);ln(月份: + month);ln(日期: + date);ln(小時(shí): + hour); ln(分鐘: + minute); ln(秒: + second);ln(: + da

15、y);使用 Calendar 類中的 get 方法可以獲得 Calendar 對(duì)象中對(duì)應(yīng)的信息,get 方法的下:如publicget(field)其中參數(shù) field 代表需要獲得的字段的值,字段說(shuō)明和上面的 set 方法保持一致。需明的是,獲得的月份為實(shí)際的月份值減 1,獲得的 Calendar 類中,周日是 1,周一是 2,周二是 3,依次類推。:其它方法說(shuō)明的值和 Date 類不一樣。在其實(shí) Calendar 類中還提供了很多其它有用的方法,下面簡(jiǎn)單的介紹幾個(gè)常見(jiàn)方法的使用。:add 方法public abstract void add(field,amount)該方法的作用是在 Ca

16、lendar 對(duì)象中的某個(gè)字段上增加或減少一定的數(shù)值,增加是 amount的值為正,減少時(shí) amount 的值為負(fù)。例如在計(jì)算一下當(dāng)前時(shí)間 100 天以后的日期,代碼如下: Calendar c3 = Calendar.getInstance(); c3.add(Calendar.DATE, 100);year1 = c3.get(Calendar.YEAR);/月份month1 = c3.get(Calendar.MONTH) + 1;/日期date1 = c3.get(Calendar.DATE);System.out.prln(year1 + 年 + month1 + 月 +date1

17、+ 日);這里 add 方法是指在 c3 對(duì)象的 Calendar.DATE,也就是日期字段上增加 100,類會(huì)重新計(jì)算該日期對(duì)象中其它各字段的值,從而獲得 100 天以后的日期,例如程序的輸出結(jié)果可能為:2009 年 6 月 17 日:after 方法publicafter(Object when)該方法的作用是判斷當(dāng)前日期對(duì)象是否在 when 對(duì)象的后面,如果在 when 對(duì)象的后面則返回 true,否則返回 false。例如:Calendar c4 = Calendar.getInstance(); c4.set(2009, 10 - 1, 10);Calendar c5 = Calen

18、dar.getInstance(); c5.set(2010, 10 - 1, 10);b = c5.after(c4);System.out.prln(b);在該示例代碼中對(duì)象 c4 代表的時(shí)間是 2009 年 10 月 10 號(hào),對(duì)象 c5 代表的時(shí)間是 2010年 10 月 10 號(hào),則對(duì)象 c5 代表的日期在 c4 代表的日期之后,所以 after 方法的返回值是 true。另外一個(gè)類似的方法是 before,該方法是判斷當(dāng)前日期對(duì)象是否位于另外一個(gè)日期對(duì)象之前。:getTime 方法public final Date getTime()該方法的作用是將 Calendar 類型的對(duì)象轉(zhuǎn)

19、換為對(duì)應(yīng)的 Date 類對(duì)象,兩者代表相同的時(shí)間點(diǎn)。類似的方法是 setTime,該方法的作用是將Date 對(duì)象轉(zhuǎn)換為對(duì)應(yīng)的 Calendar 對(duì)象,該方法的如下:public final void setTime(Date date)轉(zhuǎn)換的示例代碼如下:Date d = new Date();Calendar c6 = Calendar.getInstance();/Calendar 類型的對(duì)象轉(zhuǎn)換為Date 對(duì)象Date d1 = c6.getTime();/Date 類型的對(duì)象轉(zhuǎn)換為 Calendar 對(duì)象 Calendar c7 = Calendar.getInstance(); c7

20、.setTime(d);:Calendar 對(duì)象和相對(duì)時(shí)間之間的互轉(zhuǎn) Calendar c8 = Calendar.getInstance(); long t = 1252785271098L;/將 Calendar 對(duì)象轉(zhuǎn)換為相對(duì)時(shí)間long t1 = c8.getTimeillis();/將相對(duì)時(shí)間轉(zhuǎn)換為 Calendar 對(duì)象Calendar c9 = Calendar.getInstance();c9.setTimeillis(t1);在轉(zhuǎn)換時(shí),使用 Calendar 類中的 getTimeillis 方法可以將 Calendar 對(duì)象轉(zhuǎn)換為相對(duì)時(shí)間。在將相對(duì)時(shí)間轉(zhuǎn)換為 Calenda

21、r 對(duì)象時(shí),首先創(chuàng)建一個(gè) Calendar 對(duì)象,然后再使用Calendar 類的setTime應(yīng)用示例illis 方法設(shè)置時(shí)間即可。下面以兩個(gè)簡(jiǎn)單的示例介紹時(shí)間和日期處理的基本使用。:計(jì)算兩個(gè)日期之間相差的天數(shù)例如計(jì)算 2010 年 4 月 1 號(hào)和 2009 年 3 月 11 號(hào)之間相差的天數(shù),則可以使用時(shí)間和日期處理進(jìn)行計(jì)算。該程序?qū)崿F(xiàn)的原理為:首先代表兩個(gè)特定的時(shí)間點(diǎn),這里使用 Calendar 的對(duì)象進(jìn)行代表,然后將兩個(gè)時(shí)間點(diǎn)轉(zhuǎn)換為對(duì)應(yīng)的相對(duì)時(shí)間,求兩個(gè)時(shí)間點(diǎn)相對(duì)時(shí)間的差值,然后除以 1的毫秒數(shù)(24 小時(shí)X60 分鐘 X60 秒X1000 毫秒)即可獲得對(duì)應(yīng)的天數(shù)。實(shí)現(xiàn)該示例的完整

22、代碼如下:import java.util.*;/* 計(jì)算兩個(gè)日期之間相差的天數(shù)*/天public class DateExle1 public sic void main(String args) /設(shè)置兩個(gè)日期/日期:2009 年 3 月 11 號(hào)Calendar c1 = Calendar.getInstance(); c1.set(2009, 3 - 1, 11);/日期:2010 年 4 月 1 號(hào)Calendar c2 = Calendar.getInstance(); c2.set(2010, 4 - 1, 1);/轉(zhuǎn)換為相對(duì)時(shí)間long t1 = c1.getTime long

23、 t2 = c2.getTime/計(jì)算天數(shù)illis();illis();long days = (t2 - t1)/(24 * 60 * 60 * 1000);System.out.prln(days);:輸出當(dāng)前月的月歷該示例的功能是輸出當(dāng)前系統(tǒng)時(shí)間所在月的日歷,例如當(dāng)前系統(tǒng)時(shí)間是 2009日,則輸出 2009 年 3 月的日歷。年 3 月 10該程序?qū)崿F(xiàn)的原理為:首先獲得該月 1 號(hào)是幾,然后獲得該月的天數(shù),最后使用流程控制實(shí)現(xiàn)按照日歷的格式進(jìn)行輸出即可。即如果 1 號(hào)是一,則打印一個(gè)的空格,如果 1 號(hào)是換行。實(shí)現(xiàn)該示例的完整代碼如下:二,則打印兩個(gè)的空格,依次類推。打印完六的日期以后

24、,進(jìn)行import java.util.*;/* 輸出當(dāng)前月的日歷*/public class DateExle2public sic void main(String args)/獲得當(dāng)前時(shí)間Calendar c = Calendar.getInstance();/設(shè)置代表的日期為 1 號(hào)c.set(Calendar.DATE,1);/獲得 1 號(hào)是幾start = c.get(Calendar.DAY_OF_K);/獲得當(dāng)前月的最大日期數(shù)maxDay = c.getActualum(Calendar.DATE);/輸出標(biāo)題System.out.prln(日一二三四五六);/輸出開(kāi)始的空格f

25、or(i = 1;i start;i+) System.out.pr( );/輸出該月中的所有日期for(i = 1;i = maxDay;i+)/輸出日期數(shù)字 System.out.pr( + i);/輸出分隔空格 System.out.pr( ); if(i 10)System.out.pr( );/判斷是否換行if(start + i - 1) % 7 = 0) System.out.prln();/換行 System.out.prln();關(guān)于時(shí)間和日期的處理就介紹這么多,的實(shí)現(xiàn)方法還需要根據(jù)具體問(wèn)題進(jìn)行對(duì)應(yīng)的實(shí)現(xiàn)。Random 類在實(shí)際的項(xiàng)目開(kāi)發(fā)過(guò)程中,經(jīng)常需要產(chǎn)生一些隨機(jī)數(shù)值,例如

26、登錄中的校驗(yàn)數(shù)字等,或者需要以一定的幾率實(shí)現(xiàn)某種效果,例如程序中的物品掉落等。在Java API 中,在 java.util 包中專門(mén)提供了一個(gè)和隨機(jī)處理有關(guān)的類,這個(gè)類就是 Random類。隨機(jī)數(shù)字的生成相關(guān)的方法都包含在該類的。Random 類中實(shí)現(xiàn)的隨機(jī)算法是偽隨機(jī),也就是有規(guī)則的隨機(jī)。在進(jìn)行隨機(jī)時(shí),隨機(jī)算法的 數(shù)字稱為 數(shù)(seed),在字。相同 數(shù)的 Random 對(duì)象,相同次數(shù)生成的隨機(jī)數(shù)字是完全相同的。也就是說(shuō),兩個(gè)種子數(shù)相同的 Random 對(duì)象,第一次生成的隨機(jī)數(shù)字完全相同,第二次生成的隨機(jī)數(shù)字也完全相同。這點(diǎn)在生成多個(gè)隨機(jī)數(shù)字時(shí)需要特別注意。下面介紹一下 Random 類的

27、使用,以及如何生成指定區(qū)間的隨機(jī)數(shù)組以及實(shí)現(xiàn)程序中要求的幾率。:Random 對(duì)象的生成Random 類包含兩個(gè)構(gòu)造方法,下面依次進(jìn)行介紹:a、public Random()數(shù)的基礎(chǔ)上進(jìn)行一定的變換,從而產(chǎn)生需要的隨機(jī)數(shù)該構(gòu)造方法使用一個(gè)和當(dāng)前系統(tǒng)時(shí)間對(duì)應(yīng)的相對(duì)時(shí)間有關(guān)的數(shù)字作為數(shù)構(gòu)造 Random 對(duì)象。b、public Random(long seed)該構(gòu)造方法可以通過(guò)制定一個(gè)數(shù)進(jìn)行創(chuàng)建。示例代碼:Random r = new Random();Random r1 = new Random(10);數(shù),然后使用這個(gè)再次強(qiáng)調(diào):數(shù)只是隨機(jī)算法的:andom 類中的常用方法數(shù)字,和生成的隨機(jī)數(shù)

28、字的區(qū)間無(wú)關(guān)。Random 類中的方法比較簡(jiǎn)單,每個(gè)方法的功能也很容易理解。需明的是,Random 類中各方法生成的隨機(jī)數(shù)字都是均勻分布的,也就是說(shuō)區(qū)間率是均等的。下面對(duì)這些方法做一下基本的介紹:的數(shù)字生成的幾a、publicnext()值,生成 true 和 false 的值幾率相等,也就是都該方法的作用是生成一個(gè)隨機(jī)的是 50%的幾率。b、public double nextDouble()該方法的作用是生成一個(gè)隨機(jī)的 double 值,數(shù)值介于0,1.0)之間,這里中括號(hào)代表包含區(qū)間端點(diǎn),小括號(hào)代表不包含區(qū)間端點(diǎn),也就是 0 到 1 之間的隨機(jī)小數(shù),包含 0 而不包含1.0。c、publ

29、icnext()值,該值介于的區(qū)間,也就是-231 到 231-1 之間。該方法的作用是生成一個(gè)隨機(jī)的如果需要生成指定區(qū)間的例中的代碼。值,則需要進(jìn)行一定的數(shù)學(xué)變換,具體可以參看下面的使用示d、publicnext(n)該方法的作用是生成一個(gè)隨機(jī)的值,該值介于0,n)的區(qū)間,也就是 0 到n 之間的隨機(jī)值,包含 0 而不包含 n。如果想生成指定區(qū)間的中的代碼。值,也需要進(jìn)行一定的數(shù)學(xué)變換,具體可以參看下面的使用示例e、public void setSeed(long seed)該方法的作用是重新設(shè)置 Random 對(duì)象中的數(shù)。設(shè)置完數(shù)以后的 Random 對(duì)象和相同數(shù)使用 new 關(guān)鍵字創(chuàng)建出

30、的 Random 對(duì)象相同。:Random 類使用示例使用 Random 類,一般是生成指定區(qū)間的隨機(jī)數(shù)字,下面就一一介紹如何生成對(duì)應(yīng)區(qū)間的隨機(jī)數(shù)字。以下生成隨機(jī)數(shù)的代碼均使用以下 Random 對(duì)象 r 進(jìn)行生成:Random r = new Random(); a、成0,1.0)區(qū)間的小數(shù) double d1 = r.nextDouble();直接使用nextDouble 方法獲得。b、生成0,5.0)區(qū)間的小數(shù)double d2 = r.nextDouble() * 5;因?yàn)?nextDouble 方法生成的數(shù)字區(qū)間是0,1.0),將該區(qū)間擴(kuò)大 5 倍即是要求的區(qū)間。 同理,生成0,d)

31、區(qū)間的隨機(jī)小數(shù),d 為任意正的小數(shù),則只需要將nextDouble 方法的返回值乘以 d 即可。c、生成1,2.5)區(qū)間的小數(shù)double d3 = r.nextDouble() * 1.5 + 1;生成1,2.5)區(qū)間的隨機(jī)小數(shù),則只需要首先生成0,1.5)區(qū)間的隨機(jī)數(shù)字,然后將生成的隨機(jī)數(shù)區(qū)間加 1 即可。同理,生成任意非從 0 開(kāi)始的小數(shù)區(qū)間d1,d2)范圍的隨機(jī)數(shù)字(其中 d1 不等于 0),則只需要首先生成0,d2-d1)區(qū)間的隨機(jī)數(shù)字,然后將生成的隨機(jī)數(shù)字區(qū)間加上 d1 即可。d、生成任意整數(shù)n1 = r.next直接使用next();方法即可。e、生成0,10)區(qū)間的整數(shù)n2 =

32、 r.next(10);n2 = Mabs(r.next() %10);以上兩行代碼均可生成0,10)區(qū)間的整數(shù)。第一種實(shí)現(xiàn)使用 Random 類中的 next(n)方法直接實(shí)現(xiàn)。第二種實(shí)現(xiàn)中,首先調(diào)用next()方法生成一個(gè)任意的數(shù)字,該數(shù)字和 10 取余以后生成的數(shù)字區(qū)間為(-10,10),因?yàn)榘凑諗?shù)學(xué)上的規(guī)定余數(shù)的絕對(duì)值小于除數(shù),然后再對(duì)該區(qū)間求絕對(duì)值,則得到的區(qū)間就是0,10)了。同理,生成任意0,n)區(qū)間的隨機(jī)整數(shù),都可以使用如下代碼:n2 = r.next(n);n2 = Mabs(r.next() % n);f、生成0,10區(qū)間的整數(shù)n3 = r.next(11);n3 = Mabs(r.next() %11);相對(duì)于整數(shù)區(qū)間,0,10區(qū)間和0,11)區(qū)間等價(jià),所以即生成0,11)區(qū)間的整數(shù)。g、生成-3,15)區(qū)間的整數(shù)n4 = r.next(18) - 3;n4 = Mabs(r.next() %18) - 3;生成非從 0 開(kāi)始區(qū)間的隨機(jī)整數(shù),可以參看上面非從 0 開(kāi)始的小數(shù)區(qū)間實(shí)現(xiàn)原理的說(shuō)明。h、幾率實(shí)現(xiàn)按照一定的幾率實(shí)現(xiàn)程序邏輯

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論