案例實現
猜數字游戲
設計一個三位數的猜數游戲,三位數隨機生成。程序提示用戶輸入一個三位的數字,依照以下的規則決定贏取多少獎金:1) 如果用戶輸入的數字和隨機數字完全一致,輸出:“恭喜恭喜!完全猜對了!獲得三個贊!”2) 如果用戶輸入的數字覆蓋了隨機生成的所有數字(不管順序),輸出:“輸入的數字覆蓋了隨機生成的所有數字!很棒,獲得兩個贊!”3) 如果用戶輸入的數字匹配了1個或2個數字,輸出:“輸入的數字匹配了1個或2個數字!還不錯,獲得一個贊!”
# 源文件保存為“GuessNumberDemo.java”
import java.util.Random;public class GuessNumberDemo {public static void main(String[] args) {// Generate a lotteryRandom random=new Random();int lottery = 100+random.nextInt(900);// Prompt the user to enter a guessjava.util.Scanner input = new java.util.Scanner(System.in);System.out.print("請輸入你猜的三位整數: ");int guess = input.nextInt();// Get digitsint l1 = lottery / 100;int l2 = (lottery % 100) / 10; // l2 = (lottery / 10) % 10int l3 = lottery % 10;int g1 = guess / 100;int g2 = (guess % 100) / 10;int g3 = guess % 10;System.out.println("隨機生成的整數是:" + lottery);// Check the guessif (guess == lottery)System.out.println("恭喜恭喜!完全猜對了!獲得三個贊!");else if (g1 == l1 && g3 == l2 && g2 == l3 ||g2 == l1 && g1 == l2 && g3 == l3 ||g2 == l1 && g3 == l2 && g1 == l3 ||g3 == l1 && g1 == l2 && g2 == l3 ||g3 == l1 && g2 == l2 && g1 == l3)System.out.println("輸入的數字覆蓋了隨機生成的所有數字!很棒,獲得兩個贊!");else if (g1 == l1 || g1 == l2 || g1 == l3 ||g2 == l1 || g2 == l2 || g2 == l3 ||g3 == l1 || g3 == l2 || g3 == l3)System.out.println("輸入的數字匹配了1個或2個數字!還不錯,獲得一個贊!");elseSystem.out.println("有點遺憾!下次再來!");}
}
運行結果
輸入數字550
請輸入你猜的三位整數: 550
隨機生成的整數是:410
輸入的數字匹配了1個或2個數字!還不錯,獲得一個贊!
猜數游戲實現
# 源文件保存為“NumberGuessingGame.java”
import java.util.Scanner;
import java.util.Random;
import java.util.HashSet;
import java.util.Set;public class NumberGuessingGame {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);Random random = new Random();// 生成不重復數字的三位數int secretNumber;do {secretNumber = 100 + random.nextInt(900); // 100-999} while (!hasUniqueDigits(secretNumber));System.out.println("已生成一個三位數,數字不重復,請開始猜測!");// 獲取用戶輸入System.out.print("請輸入一個三位數:");int guess = scanner.nextInt();// 驗證輸入是否為三位數if (guess < 100 || guess > 999) {System.out.println("請輸入有效的三位數!");return;}// 比較數字if (guess == secretNumber) {System.out.println("恭喜恭喜!完全猜對了!獲得三個贊!");} else if (containsAllDigits(secretNumber, guess)) {System.out.println("輸入的數字覆蓋了隨機生成的所有數字!很棒,獲得兩個贊!");} else {int matchedDigits = countMatchedDigits(secretNumber, guess);System.out.printf("輸入的數字匹配了%d個數字!還不錯,獲得一個贊!%n", matchedDigits);}System.out.println("正確答案是:" + secretNumber);scanner.close();}// 檢查數字是否有重復數字private static boolean hasUniqueDigits(int number) {Set<Character> digits = new HashSet<>();String numStr = String.valueOf(number);for (char c : numStr.toCharArray()) {if (!digits.add(c)) {return false;}}return true;}// 檢查猜測數字是否包含所有秘密數字private static boolean containsAllDigits(int secret, int guess) {Set<Character> secretDigits = new HashSet<>();Set<Character> guessDigits = new HashSet<>();String secretStr = String.valueOf(secret);String guessStr = String.valueOf(guess);for (char c : secretStr.toCharArray(