java練習(xí)題

1.編寫一個(gè)程序散怖,幫助小學(xué)生學(xué)習(xí)乘法表,利用Math.random產(chǎn)生兩個(gè)一位正整數(shù)篮绰,該程序應(yīng)在控制臺(tái)中顯示一個(gè)如下的問題:

6*7等于多少后雷?

學(xué)生應(yīng)在文本字段中輸入答案,在程序中檢查文本答案吠各,如果答案正確臀突,則在控制臺(tái)中輸出字符串“非常好!”然后提問另一個(gè)乘法問題贾漏。如果答錯(cuò)了候学,則在控制臺(tái)中繪制字符串“錯(cuò),請(qǐng)重試”然后讓學(xué)生反復(fù)練習(xí)同樣的問題直到回答正確位置纵散,應(yīng)當(dāng)使用一個(gè)單獨(dú)方法來產(chǎn)生每個(gè)新問題梳码。當(dāng)程序開始運(yùn)行時(shí),如果每次用戶回答正確伍掀,則應(yīng)調(diào)用該方法一次掰茶。輸入-1代表退出.

public class Main {
    public static int askQuestion()
    {
        int a=(int)(Math.random()*10);
        Random random=new Random();
        int b=random.nextInt(10);//與上面一行在一起執(zhí)行也是隨機(jī)數(shù)一種的寫法,其中10為0~10
        System.out.println(a+"*"+b+"等于多少蜜笤?");
        return a*b;//返回a*b的值
    }

    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int answer=askQuestion();//將askQuestion 賦值給 answer    也就是說answer是a*b的答案
        while (true)//死循環(huán)的意思
        {
            System.out.println("輸入-1結(jié)束程序");
            int user_answer=scanner.nextInt();//用戶輸入的答案 user_answer使用戶輸入的答案
            if (user_answer==-1)//如果用戶輸入-1 則執(zhí)行break退出循環(huán)命令
            {
                break;
            }
            if (user_answer==answer)//如果答案等于用戶處輸入的答案
            {
                System.out.println("非常棒濒蒋!");
                answer=askQuestion();//答案
            }
            else
            {
                System.out.println("錯(cuò),請(qǐng)重試");
            }
        }
        System.out.println("退出程序");
    }
}

2.計(jì)算機(jī)在教育中的應(yīng)用稱之為計(jì)算機(jī)輔助教學(xué)(CAI)把兔。在開發(fā)CAI環(huán)境中遇到一個(gè)問題就是學(xué)生容易疲勞沪伙,可通過變換計(jì)算機(jī)的對(duì)話來保持學(xué)生的

注意力,從而消除疲勞县好,修改練習(xí)1中的程序围橡,為每個(gè)正確和不正確的答案打印各種評(píng)語,對(duì)正確的答案的評(píng)語如下所示:
Very good聘惦!非常好
Excellent某饰!特別好
Nice work!做的好
Keep up the good work! 做的好善绎,繼續(xù)保持
對(duì)不正確的評(píng)語如下所以:
No.Please try again. 錯(cuò)黔漂,請(qǐng)重試
Wrong.Try once more. 錯(cuò),再試試
Don't give up! 別放棄
Nn.keep trying. 保持嘗試
利用隨機(jī)產(chǎn)生器來選擇1到4中的一個(gè)數(shù)禀酱,從而給出對(duì)于每個(gè)答案一個(gè)恰當(dāng)評(píng)語炬守。

public class Question {

    static String[] good = {"非常好","特別好","做的好","做的好,繼續(xù)保持"};
    static String[] error = {"錯(cuò)剂跟,請(qǐng)重試","錯(cuò)减途,再試試","別放棄","保持嘗試"};

    public static int askQuestion()
    {
        //產(chǎn)生2個(gè)10以內(nèi)隨機(jī)整數(shù)(乘數(shù)和被乘數(shù))
        int a = (int)(Math.random() * 9)+1;
        Random random = new Random();
        int b = random.nextInt(9)+1;
        System.out.println(a+"*"+b+"等于多少酣藻?");
        return a*b;
    }

    public static void main(String[] args) {

         Scanner scanner = new Scanner(System.in);
        int answer = askQuestion();//答案
        while (true)
        {
            System.out.println("輸入-1退出程序");

            int user_answer = scanner.nextInt();
            if(user_answer == -1)
            {
                break;
            }

            if(answer == user_answer)
            {
                Random random = new Random();
                int index = random.nextInt(4);
                System.out.println(good[index]);
                answer = askQuestion();//答案
            }
            else//打錯(cuò)了,需要重新出剛才那道題
            {

                Random random = new Random();
                int index = random.nextInt(4);
                System.out.println(error[index]);
            }

        }

        System.out.println("程序退出");
    }
}

3.編寫一個(gè)程序鳍置,按照如下規(guī)則玩“猜數(shù)游戲”:在程序中辽剧,通過選擇一個(gè)1——1000的整數(shù)之間隨機(jī)數(shù)來確定要猜的數(shù)。程序在一個(gè)文本字段旁顯示提示:
猜一個(gè)1-1000之間的數(shù)

玩家在文本字段中輸入第一個(gè)數(shù)并按下回車鍵税产。如果玩家猜錯(cuò)了怕轿,程序應(yīng)當(dāng)在狀態(tài)欄中顯示“太大了,再試”或者“太小了再試”辟拷,幫助玩家“接近”正確答案并清除文本字段撞羽,以便用用戶能輸入下一個(gè)猜測(cè)的數(shù)。當(dāng)用戶輸入了正確答案后衫冻,就顯示“祝賀你诀紊,猜對(duì)了”,在控制臺(tái)中清除文本字段以便用戶可以再次進(jìn)行游戲。提示:這個(gè)問題種使用查找技術(shù)稱為二分查找(binary search)隅俘。

public class GuessNumber {
    public static void main(String[] args) {
        Random random = new Random();
        int guessnum = random.nextInt(1000)+1;//生成一個(gè)隨機(jī)數(shù)邻奠,讓用戶猜

//        System.out.println(guessnum);
        int guessCount = 0;//記錄用戶猜了多少次
        Scanner scanner = new Scanner(System.in);
        System.out.println("請(qǐng)猜數(shù)");
        int input = scanner.nextInt();//用戶第一次輸入答案
        guessCount++;
        while (input != guessnum)
        {
            if(input > guessnum)
            {
                System.out.println("太大了");
            }
            else
            {
                System.out.println("太小了");
            }
            guessCount++;
            System.out.println("請(qǐng)猜數(shù)");
            input = scanner.nextInt();//讓用戶再次輸入答案
        }

        System.out.println("程序退出,一共用了"+ guessCount + "次");

    }
}

4.(航空訂票系統(tǒng))一家小型航空公司剛購買一臺(tái)計(jì)算機(jī)考赛,用于其最新的自動(dòng)訂票系統(tǒng)惕澎,要求編寫新的程序,為該公司唯一一架飛機(jī)(運(yùn)量:10

)的每次飛行安排座位颜骤,程序應(yīng)當(dāng)顯示下列選項(xiàng):
Please type 1 for "smoking"(吸煙區(qū)請(qǐng)安1)
Please type 2 for "nonsmoking"(無煙區(qū)請(qǐng)安2)
如果某人按下1唧喉,那么程序應(yīng)當(dāng)在吸煙艙(1——5)為其分配一個(gè)座位。如果某人按下2忍抽,那么程序應(yīng)當(dāng)在無煙艙為其分配一個(gè)座位(6——10)八孝。在

程序中應(yīng)打印出一張登記卡,以表明此人的座號(hào)以及他在飛機(jī)的吸煙艙還是無煙艙鸠项。用一個(gè)單下標(biāo)數(shù)組描述飛機(jī)的訂票情況干跛,將所有的數(shù)組元素初始

化為0,表明所有座位都是空的祟绊。在分配一個(gè)座位后楼入,設(shè)置數(shù)組的相應(yīng)元素為1,則該座位不能再分配牧抽,
程序中當(dāng)然不應(yīng)分配已分配的座位嘉熊。當(dāng)吸煙艙客滿后程序應(yīng)當(dāng)詢問此人是否接受安排的無煙區(qū),反之亦然扬舒。如果回答肯定阐肤,那么應(yīng)當(dāng)進(jìn)行適當(dāng)?shù)淖?/p>

安排。如果回答否定,那么打印消息“Next flight leaves in 3 hours.”(下次航班三小時(shí)后起飛)孕惜。

public class FlyOrderTicket {

    
    
    public static void main(String[] args) {

        int[] seats = new int[10];//代表10個(gè)空閑座位愧薛,其中1-5是吸煙區(qū),6-10是無煙區(qū)
        Scanner scanner = new Scanner(System.in);

        while (true)
        {
            System.out.println("吸煙區(qū)請(qǐng)安1,無煙區(qū)請(qǐng)安2,退出按-1");
            int command = scanner.nextInt();
            if(command == -1)
            {
                break;
            }
            else if(command == 1)//在吸煙區(qū)給用戶分配一個(gè)座位
            {
                int i;
                for(i = 0; i < 5; i++)
                {
                    //考察座位是否已經(jīng)被分配出去了
                    if(seats[i] == 0)//當(dāng)前座位可以分配
                    {
                        seats[i] = 1;//分配出去了該座位
                        System.out.println("你的座號(hào)是"+(i+1) + "在吸煙區(qū)");//打印登記卡
                        break;
                    }
                }

                if(i == 5)//沒有在吸煙區(qū)找到空余座位
                {
                    System.out.println("吸煙區(qū)無座位了衫画,是否接受無煙區(qū)的座位毫炉?");
                    String answer = scanner.next();
                    if(answer.equals("是"))//在無煙區(qū)分配座位
                    {
                        int j;
                        for(j = 5; j < 10; j++)
                        {
                            //考察座位是否已經(jīng)被分配出去了
                            if(seats[j] == 0)//當(dāng)前座位可以分配
                            {
                                seats[j] = 1;//分配出去了該座位
                                System.out.println("你的座號(hào)是"+(j+1) + "在無煙區(qū)");//打印登記卡
                                break;
                            }
                        }

                        if(j==10)//無煙區(qū)也沒有座位了
                        {
                            System.out.println("下次航班三小時(shí)后起飛");
                        }

                    }
                    else
                    {
                        System.out.println("下次航班三小時(shí)后起飛");
                    }
                }

            }
            else if(command == 2)//在無煙區(qū)分配座位
            {
                int j;
                for(j = 5; j < 10; j++)
                {
                    //考察座位是否已經(jīng)被分配出去了
                    if(seats[j] == 0)//當(dāng)前座位可以分配
                    {
                        seats[j] = 1;//分配出去了該座位
                        System.out.println("你的座號(hào)是"+(j+1) + "在無煙區(qū)");//打印登記卡
                        break;
                    }
                }
                if(j==10)//無煙區(qū)沒有座位了
                {
                    System.out.println("無煙區(qū)無座位了,是否接受吸煙區(qū)的座位削罩?");
                    String answer = scanner.next();
                    if (answer.equals("是"))//在無煙區(qū)分配座位
                    {
                        int i;
                        for (i = 0; i < 5; i++) {
                            //考察座位是否已經(jīng)被分配出去了
                            if (seats[i] == 0)//當(dāng)前座位可以分配
                            {
                                seats[i] = 1;//分配出去了該座位
                                System.out.println("你的座號(hào)是" + (i + 1) + "在吸煙區(qū)");//打印登記卡
                                break;
                            }
                        }

                        if (i == 5)//吸煙區(qū)也沒有座位了
                        {
                            System.out.println("下次航班三小時(shí)后起飛");
                        }
                    }
                }

            }

        }

        System.out.println("謝謝使用");

    }
}

方法提取版

public class FlyOrderTicket {
    static int[] seats = new int[10];//代表10個(gè)空閑座位碘箍,其中1-5是吸煙區(qū),6-10是無煙區(qū)


    public static int allocSeats(int start, int end)
    {
        String strArea = "吸煙區(qū)";
        if(end == 10)
        {
            strArea = "無煙區(qū)";
        }
        int i;
        for(i = start; i < end; i++)
        {
            //考察座位是否已經(jīng)被分配出去了
            if(seats[i] == 0)//當(dāng)前座位可以分配
            {
                seats[i] = 1;//分配出去了該座位
                System.out.println("你的座號(hào)是"+(i+1) + "在" + strArea);//打印登記卡
                break;
            }
        }
        return i;
    }

    public static void main(String[] args) {


        Scanner scanner = new Scanner(System.in);

        while (true)
        {
            System.out.println("吸煙區(qū)請(qǐng)安1,無煙區(qū)請(qǐng)安2,退出按-1");
            int command = scanner.nextInt();
            if(command == -1)
            {
                break;
            }
            else if(command == 1)//在吸煙區(qū)給用戶分配一個(gè)座位
            {
                int i = allocSeats(0,5);

                if(i == 5)//沒有在吸煙區(qū)找到空余座位
                {
                    System.out.println("吸煙區(qū)無座位了鲸郊,是否接受無煙區(qū)的座位?");
                    String answer = scanner.next();
                    if(answer.equals("是"))//在無煙區(qū)分配座位
                    {
                        int j = allocSeats(5,10);


                        if(j==10)//無煙區(qū)也沒有座位了
                        {
                            System.out.println("下次航班三小時(shí)后起飛");
                        }

                    }
                    else
                    {
                        System.out.println("下次航班三小時(shí)后起飛");
                    }
                }

            }
            else if(command == 2)//在無煙區(qū)分配座位
            {
                int j = allocSeats(5,10);

                if(j==10)//無煙區(qū)沒有座位了
                {
                    System.out.println("無煙區(qū)無座位了货邓,是否接受吸煙區(qū)的座位秆撮?");
                    String answer = scanner.next();
                    if (answer.equals("是"))//在無煙區(qū)分配座位
                    {
                        int i = allocSeats(0,5);

                        if (i == 5)//吸煙區(qū)也沒有座位了
                        {
                            System.out.println("下次航班三小時(shí)后起飛");
                        }
                    }
                }

            }

        }

        System.out.println("謝謝使用");

    }
}

5.某個(gè)公司采用公用電話傳遞數(shù)據(jù)信息,數(shù)據(jù)是小于8位的整數(shù)换况,為了確保安全职辨,5698234 --》 4328965 ---》9873410 -- 》 0873419
在傳遞過程中需要加密,加密規(guī)則如下:

 首先將數(shù)據(jù)倒序戈二,然后將每位數(shù)字都加上5舒裤,再用和除以10的余數(shù)代替該數(shù)字,
 最后將第一位和最后一位數(shù)字交換觉吭。 請(qǐng)任意給定一個(gè)小于8位的整數(shù)腾供,
 然后,把加密后的結(jié)果在控制臺(tái)打印出來鲜滩。 
public class JiaMi {
    public static void main(String[] args) {
        int index = 0; //數(shù)組當(dāng)前的下標(biāo)
        int[] array = new int[8];
        Scanner scanner = new Scanner(System.in);
        System.out.println("請(qǐng)輸入要加密的數(shù)");
        int num = scanner.nextInt();//--》 4328965
        //將數(shù)倒序伴鳖,保存到數(shù)組中
        while (num != 0)
        {
            array[index] = num % 10;
            index++;
            num = num / 10;
        }

        for(int i = 0; i < index; i++)
        {
            array[i] = (array[i] + 5) % 10; //每位數(shù)字都加上5,再用和除以10的余數(shù)代替該數(shù)字
        }

         //最后將第一位和最后一位數(shù)字交換
        int temp = array[0];
        array[0] = array[index - 1];
        array[index - 1] = temp;

        for(int i = 0; i < index; i++)
        {
            System.out.print(array[i]);
        }

        return;
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末徙硅,一起剝皮案震驚了整個(gè)濱河市榜聂,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌嗓蘑,老刑警劉巖须肆,帶你破解...
    沈念sama閱讀 222,681評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異桩皿,居然都是意外死亡豌汇,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,205評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門业簿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瘤礁,“玉大人,你說我怎么就攤上這事梅尤」袼迹” “怎么了岩调?”我有些...
    開封第一講書人閱讀 169,421評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長赡盘。 經(jīng)常有香客問我号枕,道長,這世上最難降的妖魔是什么陨享? 我笑而不...
    開封第一講書人閱讀 60,114評(píng)論 1 300
  • 正文 為了忘掉前任葱淳,我火速辦了婚禮,結(jié)果婚禮上抛姑,老公的妹妹穿的比我還像新娘赞厕。我一直安慰自己,他們只是感情好定硝,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,116評(píng)論 6 398
  • 文/花漫 我一把揭開白布皿桑。 她就那樣靜靜地躺著,像睡著了一般蔬啡。 火紅的嫁衣襯著肌膚如雪诲侮。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,713評(píng)論 1 312
  • 那天箱蟆,我揣著相機(jī)與錄音沟绪,去河邊找鬼。 笑死空猜,一個(gè)胖子當(dāng)著我的面吹牛绽慈,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播抄肖,決...
    沈念sama閱讀 41,170評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼久信,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了漓摩?” 一聲冷哼從身側(cè)響起裙士,我...
    開封第一講書人閱讀 40,116評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎管毙,沒想到半個(gè)月后腿椎,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,651評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡夭咬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,714評(píng)論 3 342
  • 正文 我和宋清朗相戀三年啃炸,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片卓舵。...
    茶點(diǎn)故事閱讀 40,865評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡南用,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情裹虫,我是刑警寧澤肿嘲,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站筑公,受9級(jí)特大地震影響雳窟,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜匣屡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,211評(píng)論 3 336
  • 文/蒙蒙 一封救、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧捣作,春花似錦誉结、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,699評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至嘱朽,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間怔接,已是汗流浹背搪泳。 一陣腳步聲響...
    開封第一講書人閱讀 33,814評(píng)論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留扼脐,地道東北人岸军。 一個(gè)月前我還...
    沈念sama閱讀 49,299評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像瓦侮,于是被迫代替她去往敵國和親艰赞。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,870評(píng)論 2 361