9 java基礎(chǔ)綜合編程練習(xí)---猜單詞游戲

配套視頻教程

本文B站配套視頻教程

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);

        }
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末余指,一起剝皮案震驚了整個(gè)濱河市捕犬,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌酵镜,老刑警劉巖碉碉,帶你破解...
    沈念sama閱讀 222,378評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異淮韭,居然都是意外死亡垢粮,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,970評論 3 399
  • 文/潘曉璐 我一進(jìn)店門靠粪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蜡吧,“玉大人,你說我怎么就攤上這事占键∥羯疲” “怎么了?”我有些...
    開封第一講書人閱讀 168,983評論 0 362
  • 文/不壞的土叔 我叫張陵畔乙,是天一觀的道長君仆。 經(jīng)常有香客問我,道長牲距,這世上最難降的妖魔是什么返咱? 我笑而不...
    開封第一講書人閱讀 59,938評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮牍鞠,結(jié)果婚禮上咖摹,老公的妹妹穿的比我還像新娘。我一直安慰自己皮服,他們只是感情好楞艾,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,955評論 6 398
  • 文/花漫 我一把揭開白布参咙。 她就那樣靜靜地躺著,像睡著了一般硫眯。 火紅的嫁衣襯著肌膚如雪蕴侧。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,549評論 1 312
  • 那天两入,我揣著相機(jī)與錄音净宵,去河邊找鬼。 笑死裹纳,一個(gè)胖子當(dāng)著我的面吹牛择葡,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播剃氧,決...
    沈念sama閱讀 41,063評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼敏储,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了朋鞍?” 一聲冷哼從身側(cè)響起已添,我...
    開封第一講書人閱讀 39,991評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎滥酥,沒想到半個(gè)月后更舞,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,522評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡坎吻,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,604評論 3 342
  • 正文 我和宋清朗相戀三年缆蝉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瘦真。...
    茶點(diǎn)故事閱讀 40,742評論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡刊头,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出诸尽,到底是詐尸還是另有隱情芽偏,我是刑警寧澤,帶...
    沈念sama閱讀 36,413評論 5 351
  • 正文 年R本政府宣布弦讽,位于F島的核電站,受9級特大地震影響膀哲,放射性物質(zhì)發(fā)生泄漏往产。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,094評論 3 335
  • 文/蒙蒙 一某宪、第九天 我趴在偏房一處隱蔽的房頂上張望仿村。 院中可真熱鬧,春花似錦兴喂、人聲如沸蔼囊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,572評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽畏鼓。三九已至酱酬,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間云矫,已是汗流浹背膳沽。 一陣腳步聲響...
    開封第一講書人閱讀 33,671評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留让禀,地道東北人挑社。 一個(gè)月前我還...
    沈念sama閱讀 49,159評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像巡揍,于是被迫代替她去往敵國和親痛阻。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,747評論 2 361

推薦閱讀更多精彩內(nèi)容