您好,登錄后才能下訂單哦!
問(wèn)題
實(shí)現(xiàn)猜字母游戲中的字母生成方法,即,隨機(jī)生成5個(gè)不同的字母作為猜測(cè)的結(jié)果。
方案
實(shí)現(xiàn)generate方法,首先聲明一個(gè)字符類(lèi)型的數(shù)組,用于存儲(chǔ)26個(gè)大寫(xiě)字母,然后聲明一個(gè)boolean類(lèi)型的數(shù)組,其長(zhǎng)度也為26。此數(shù)組中的初始值均為false,意味著,程序起始,沒(méi)有任何字母被選中。如果某個(gè)字母被選中,則同時(shí)設(shè)置該字母在boolean類(lèi)型數(shù)組中對(duì)應(yīng)位置上的值為true,表示該字母被選中過(guò)。
然后,使用嵌套循環(huán):外層循環(huán)用于控制所生成的字母?jìng)€(gè)數(shù),即,循環(huán)5次,以產(chǎn)生5個(gè)字母;而內(nèi)層循環(huán)則用于判斷所生成的字母是否重復(fù)。generate方法的程序流程如圖所示:
步驟
實(shí)現(xiàn)此案例需要按照如下步驟進(jìn)行。
步驟一:構(gòu)建存儲(chǔ)所有字母的數(shù)組
在generate方法中,首先定義char類(lèi)型的數(shù)組變量letters,用于存放26個(gè)大寫(xiě)字母,然后定義boolean類(lèi)型的數(shù)組變量flag,flag數(shù)組的大小和letters數(shù)組的大小相同,用于記載某字母是否被選中,以便于判斷字母是否重復(fù)。代碼如下所示:
public static char[] generate(){
char[] chs=new char[5];
char[] letters={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S',
'T','U','V','W','X','Y','Z'};
boolean flags=new boolean[letters.length];
return chs;
}無(wú)錫專(zhuān)業(yè)婦科醫(yī)院 http://www.xasgyy.net/
步驟二:隨機(jī)選擇5個(gè)不同的字母
使用嵌套循環(huán),隨機(jī)選擇5個(gè)不同的字母,并且這五個(gè)字母不相同。代碼如下所示:
public static char[] generate(){
char[] chs=new char[5];
char[] letters={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S',
'T','U','V','W','X','Y','Z'};
boolean[] flags=new boolean[letters.length];
for(int i=0;i
int index;
do{
index=(int)(Math.random()*(letters.length));
}while(flags[index]);//判斷生成的字符是否重復(fù)
chs[i]=letters[index];
flags[index]=true;
}
return chs;
}
總結(jié):
很多初學(xué)者寫(xiě)程序沒(méi)有思路,即使有思路也不知道從哪里下手,腦子里一團(tuán)糟。無(wú)論多么復(fù)雜的程序,都是由一個(gè)個(gè)小功能組成。這里的小功能指的就是“方法”,將每一個(gè)小功能都封裝成方法,完善每一個(gè)方法,一個(gè)程序就完成了。
generate()方法的關(guān)鍵就在于如何實(shí)現(xiàn)不重復(fù),這里用到了flag標(biāo)記實(shí)現(xiàn)了不重復(fù)。在其他需要實(shí)現(xiàn)不重復(fù)的...程序中,也可以用到此思想。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。