配套視頻教程
image.png
任務(wù)目的
1.掌握字符串常用操作
2.掌握隨機(jī)數(shù)的用法
3.掌握控制臺(tái)基本輸入輸出
4.掌握循環(huán)衷模,分支條件的用法
5.培養(yǎng)編程思維鹃共,提高分析問題能力`
任務(wù)描述
image.png
需求
給定單詞數(shù)組(不少于10個(gè))赔退,程序隨機(jī)選擇其中的一個(gè)救恨,并顯示單詞字符長度個(gè)橫線(-)纵朋,用戶有5次猜測機(jī)會(huì)雷客,用戶每次猜一個(gè)字母裙秋,如果正確,則將在相應(yīng)的位置上顯示出來泽西;如錯(cuò)誤則猜測機(jī)會(huì)減一曹铃,重復(fù)該過程,直至單詞的全部字母全部猜出或者猜測次數(shù)用完捧杉,最后宣布用戶勝利或失敗。
實(shí)例
例如隨機(jī)選出的單詞是apple秘血,程序先打印- - - - -
用戶輸入p味抖,程序打印
-pp--
用戶輸入e,程序打印
-pp-e
用戶輸入t灰粮,程序打印
-pp-e
您還有4次機(jī)會(huì)
用戶輸入a仔涩,程序打印
app-e
用戶輸入l,程序打印
apple
恭喜您粘舟,取得勝利熔脂。
任務(wù)注意事項(xiàng)
請注意代碼風(fēng)格的整齊、優(yōu)雅
代碼中含有必要的注釋
學(xué)習(xí)參考資料
百度以下java類型的用法:
- Scanner
- Random
參考答案
首先柑肴,鼓勵(lì)大家先自己進(jìn)行思考霞揉,然后再對照我們給出的參考答案。以達(dá)到提高自己分析問題的能力晰骑。
參考答案
public class MyGuessWord {
public static void printWords(char[] wordNow)
{
for(int i = 0; i < wordNow.length; i++)
{
System.out.print(wordNow[i]);
}
}
public static void main(String[] args) {
//1隨機(jī)從題庫中挑出一個(gè)單詞給用戶猜
//題庫怎么表達(dá)---字符串?dāng)?shù)組
String[] words = {"static","abstract","extends","implements","throw","orange","student","select","group","interface"};
//隨機(jī)選出一個(gè)單詞
Random random = new Random();
int randomIndex = random.nextInt(words.length);//隨機(jī)下標(biāo)
String selectWord = words[randomIndex];
System.out.println(selectWord);
//定義一個(gè)字符數(shù)組保存用戶當(dāng)前單詞的猜中部分
char[] wordNow = new char[selectWord.length()];
//將字符數(shù)組中的每個(gè)字符初始設(shè)置成-
for(int i = 0; i < wordNow.length; i++)
{
wordNow[i] = '-';
}
printWords(wordNow);
//2.向用戶輸出和選出單詞同等數(shù)量的橫線-
//需要知道單詞有多少個(gè)字符 selectWord.length()
int userTimes = 5;//用戶可以猜5次;
//讓用戶開始猜适秩,接受用戶輸入一個(gè)字符,判斷用戶輸入的字符是否在單詞中
//如果不在,機(jī)會(huì)減一秽荞;如果猜對了骤公,就在字符對應(yīng)的位置將該字符顯示出來
//上述步驟循環(huán)執(zhí)行,有2種情況跳出循環(huán)
//1.用戶猜出了單詞的全部字符,用戶贏了
//2.用戶的機(jī)會(huì)減為0了扬跋,用戶輸了
while(true)
{
Scanner scanner = new Scanner(System.in);
System.out.println();
String strGuess = scanner.next();//用戶輸入的字符z
// boolean bIsContains = selectWord.contains(strGuess);
int nIndex = selectWord.indexOf(strGuess);//interface
if(nIndex < 0)//如果不在阶捆,機(jī)會(huì)減一;輸出還剩多少次機(jī)會(huì)钦听,并且輸出當(dāng)前單詞的猜中部分
{
userTimes--;
if(userTimes == 0)
{
break;
}
System.out.println("還剩"+userTimes+"次機(jī)會(huì)");
printWords(wordNow);
}
else//如果猜對了洒试,就在字符對應(yīng)的位置將該字符顯示出來,其他的位置依然打印-
{
//在字符對應(yīng)的位置將該字符顯示出來,其他的位置依然打印-(有可能該字符在單詞中出現(xiàn)多次,都要變身)
for(int i = 0; i < selectWord.length(); i++)
{
//取出單詞的每一個(gè)字符
char tempC = selectWord.charAt(i);
if(tempC == strGuess.charAt(0))
{
wordNow[i] = tempC;
}
}
printWords(wordNow);
//如果wordNow數(shù)組中不在包含-彪见,說明所有的字符全部被猜出來了
String strWordNow = String.valueOf(wordNow);//字符數(shù)組轉(zhuǎn)為字符串
if(!strWordNow.contains("-"))
{
break;
}
}
}
//判斷最終結(jié)果
//1.用戶猜出了單詞的全部字符,用戶贏了
//2.用戶的機(jī)會(huì)減為0了儡司,用戶輸了
if(userTimes > 0)//說明不是因?yàn)闄C(jī)會(huì)沒了跳出的循環(huán)
{
System.out.println("恭喜,你猜對啦");
}
else
{
System.out.println("你輸了,正確答案是");
System.out.println(selectWord);
}
}
}