猜數字游戲(隨機數和Scannner的應用)

来源:https://www.cnblogs.com/buildnewhomeland/archive/2020/01/11/12181168.html
-Advertisement-
Play Games

在指定範圍內生成一個隨機數作為目標值,用戶對目標值進行猜測。 import java.util.Random; // 隨機數 import java.util.Scanner; // 獲取用戶輸入 public class Example { public static void main(Stri ...


在指定範圍內生成一個隨機數作為目標值,用戶對目標值進行猜測。

import java.util.Random; // 隨機數
import java.util.Scanner; // 獲取用戶輸入

public class Example {
    public static void main(String[] args) {
        Random rand = new Random();
        Scanner in = new Scanner(System.in); // in 為一個變數
        // 是否開始游戲
        boolean isPlay = true;
        // 設置游玩次數
        int count = 7;
        // 設置已玩次數
        int havePlay = 0;

        // 設置隨機數邊界值 (這裡也可以由用戶自行輸入)
        int min = 10;
        int max = 90;

        // 指定範圍[min,max]隨機數公式:Random.nextInt(max-min+1)+min;
        int randNum = rand.nextInt(max-min+1)+min;
        // 生成目標值在(min,max)雙開區間
        int goal = randNum;
        if (randNum == min) {
            goal += 1;
        }else if (randNum == max) {
            goal -= 1;
        }

        // 邏輯部分
        while(isPlay) {
            if (havePlay==0) { // 首次游玩時給出範圍
                System.out.println("指定範圍為:(" + min + ", " + max + "),輸入負數可退出游戲。");
            }
            System.out.println("請輸入你的猜想:");
            int guessNum = in.nextInt(); // 讀入猜測數字
            count--; // 每猜一次,猜測機會減少一次
            havePlay++; // 每猜一次,已玩次數增加一次

            // 游戲規則:1 輸入負數,退出游戲。 2 猜中答案,跳出迴圈,游戲結束。3 猜測數字和目標值的關係對比
            if (guessNum < 0) {
                System.out.println("玩家選擇退出游戲。");
                isPlay = !isPlay;
            } else if (guessNum == goal) {
                System.out.println("恭喜您用了" + havePlay + "次猜中了答案!答案為" + goal + "。游戲結束~");
                break;
            } else if (guessNum > goal && count > 0) {
                System.out.println("比目標值大了哦~您還剩" + count + "次機會。");
            } else if (guessNum < goal && count > 0) {
                System.out.println("比目標值小了哦~您還剩" + count + "次機會。");
            } else if (count <= 0) {
                System.out.println("您的機會已經用盡,正確答案為:" + goal);
                break;
            }
        }
    }
}

 

 (運氣比較好,兩次就猜中了。。。)

游戲改良:在這個程式中,我們還可以規定:1. 隨機數邊界值;2. 游玩的次數。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 第一次: 沒有jdk,安裝好jdk就可以了 第二次: java的環境變數沒配好,按照下圖的配就行: Java_HOME和jre_HOME都是jdk的目錄就行 最後兩行不加試試,好像都沒多大關係 應該是這兩個的原因,也有可能是埠號被占用,或者防火牆沒關,這兩個都容易解決,網上查下就ok了 然後寫下我 ...
  • eden space剩餘空間不足分配,且需要分配對象記憶體不小於eden space總空間的一半,直接分配到老年代,不觸發Minor GC。適合-XX:+UseParallelGC、-XX:+UseParallelOldGC,即適合Parallel Scavenge。 ...
  • 【導讀】2020年,你又立了什麼新的 Flag?新一年,我們先為大家準備 30 個非常優秀的 Python 實踐技巧。希望這些訣竅能在實際工作中幫助大家,並且學到一些有用的知識。 1、使用 python 3由於官方從2020年1月1日起就停止了對python2.7的更新支持,因此本教程的大部分例子都 ...
  • 用法說明 python中有一些非常有趣的函數,面試的時候可能會遇到。今天也來總結一下,不過該類的網上資料也相當多,也沒多少乾貨,只是習慣性將一些容易遺忘的功能進行整理。 lambda 為關鍵字。filter,map,reduce為內置函數。 lambda:實現python中單行最小函數。 filte ...
  • python裝飾器@wraps作用 修複被裝飾後的函數名等屬性的改變 Python裝飾器(decorator)在實現的時候,被裝飾後的函數其實已經是另外一個函數了(函數名等函數屬性會發生改變), 為了不影響,Python的functools包中提供了一個叫wraps的decorator來消除這樣的副 ...
  • 怎麼快速的對列表進行去重呢,去重之後原來的順序會不會改變呢? 去重之後順序會改變 set去重 列表去重改變原列表的順序了 但是,可以通過列表中索引(index)的方法保證去重後的順序不變。 itertools.groupby fromkeys 通過刪除索引 去重不改變順序 建立新列表[] reduc ...
  • 功能介紹 整理生信小知識庫,一些技巧一些知識。 昨天 以下配置環境基於window操作系統,安裝python3版本為例,推薦基礎版配置。 ! METHOD 1 (基礎版) 官網下載對應電腦版本的python3:https://www.python.org/downloads/windows/​​ 下 ...
  • 小伙伴們新年好啊,又有半個月沒有更新博客了。更新也比較隨性,想起什麼就寫點什麼,方便和大家工作同學習總結。 最近和同事說起了PHP安全相關的問題,記錄下一些心得體會。 由於腳本語言和早期版本設計的諸多原因,php項目存在不少安全隱患。從配置選項來看,可以做如下的優化。 1.屏蔽PHP錯誤輸出。在/e ...
一周排行
    -Advertisement-
    Play Games
  • .Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 實測可以完整運行在 win7sp1/win10/win11. 如果用其他工具打包,還可以運行在mac/linux下, 傳送門BlazorHybrid 發佈為無依賴包方式 安裝 WebView2Runtime 1.57 M ...
  • 目錄前言PostgreSql安裝測試額外Nuget安裝Person.cs模擬運行Navicate連postgresql解決方案Garnet為什麼要選擇Garnet而不是RedisRedis不再開源Windows版的Redis是由微軟維護的Windows Redis版本老舊,後續可能不再更新Garne ...
  • C#TMS系統代碼-聯表報表學習 領導被裁了之後很快就有人上任了,幾乎是無縫銜接,很難讓我不想到這早就決定好了。我的職責沒有任何變化。感受下來這個系統封裝程度很高,我只要會調用方法就行。這個系統交付之後不會有太多問題,更多應該是做小需求,有大的開發任務應該也是第二期的事,嗯?怎麼感覺我變成運維了?而 ...
  • 我在隨筆《EAV模型(實體-屬性-值)的設計和低代碼的處理方案(1)》中介紹了一些基本的EAV模型設計知識和基於Winform場景下低代碼(或者說無代碼)的一些實現思路,在本篇隨筆中,我們來分析一下這種針對通用業務,且只需定義就能構建業務模塊存儲和界面的解決方案,其中的數據查詢處理的操作。 ...
  • 對某個遠程伺服器啟用和設置NTP服務(Windows系統) 打開註冊表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer 將 Enabled 的值設置為 1,這將啟用NTP伺服器功 ...
  • title: Django信號與擴展:深入理解與實踐 date: 2024/5/15 22:40:52 updated: 2024/5/15 22:40:52 categories: 後端開發 tags: Django 信號 松耦合 觀察者 擴展 安全 性能 第一部分:Django信號基礎 Djan ...
  • 使用xadmin2遇到的問題&解決 環境配置: 使用的模塊版本: 關聯的包 Django 3.2.15 mysqlclient 2.2.4 xadmin 2.0.1 django-crispy-forms >= 1.6.0 django-import-export >= 0.5.1 django-r ...
  • 今天我打算整點兒不一樣的內容,通過之前學習的TransformerMap和LazyMap鏈,想搞點不一樣的,所以我關註了另外一條鏈DefaultedMap鏈,主要調用鏈為: 調用鏈詳細描述: ObjectInputStream.readObject() DefaultedMap.readObject ...
  • 後端應用級開發者該如何擁抱 AI GC?就是在這樣的一個大的浪潮下,我們的傳統的應用級開發者。我們該如何選擇職業或者是如何去快速轉型,跟上這樣的一個行業的一個浪潮? 0 AI金字塔模型 越往上它的整個難度就是職業機會也好,或者說是整個的這個運作也好,它的難度會越大,然後越往下機會就會越多,所以這是一 ...
  • @Autowired是Spring框架提供的註解,@Resource是Java EE 5規範提供的註解。 @Autowired預設按照類型自動裝配,而@Resource預設按照名稱自動裝配。 @Autowired支持@Qualifier註解來指定裝配哪一個具有相同類型的bean,而@Resourc... ...