Java實(shí)現(xiàn)的猜數(shù)字游戲示例
本文實(shí)例講述了Java實(shí)現(xiàn)的猜數(shù)字游戲。分享給大家供大家參考,具體如下:
這里演示一段java語言猜數(shù)字代碼,流程如下:
- 系統(tǒng)隨機(jī)生成0-9中的不重復(fù)四位數(shù)字。
- 然后用戶輸入四個(gè)數(shù)字
- 如果數(shù)字對(duì)了,位置不對(duì) 則顯示 nB,n是有幾個(gè)是位置對(duì)的。
- 如果數(shù)字對(duì)了,位置也是對(duì)的 則顯示mA,m代表有幾個(gè)數(shù)字是正確位置上的。
例如: 生成的是0369 用戶輸入的是0396 則顯示2A2B,兩個(gè)位置是正確并且數(shù)字正確的,另外兩個(gè)是數(shù)字正確,位置不正確的。
Java代碼:
package com.example.test;
import java.util.Random;
import java.util.Scanner;
public class NumberCode {
int[] Nums = new int[4];
int[] inputNumsArray = new int[4];
int difficultyLevel;
int difficulty;
int aA = 0;
int bB = 0;
String numberStr = "";
String str = "";
/**
* 生成隨機(jī)數(shù)
*/
public int[] randNums(int n) {
for (int i = 0; i < Nums.length; i++) {
Random ran = new Random();
int a = ran.nextInt(10);
if (i - 1 != -1) {
for (int j = 0; j < i; j++) {
if (a == Nums[j]) {
i--;
break;
} else {
Nums[i] = a;
}
}
} else {
Nums[i] = a;
}
}
return Nums;
}
/**
* 選擇游戲難度
*/
public int selectLevel() {
// 接受一個(gè)數(shù)字
// 1:Easy 可以猜12次
// 2:Common 可以猜9次
// 3:Hard 可以猜7次
@SuppressWarnings("resource")
Scanner scan = new Scanner(System.in);
System.out
.println("請(qǐng)選擇難度系數(shù)(輸入數(shù)字),1:Easy 可以猜12次;2:Common 可以猜9次;3:Hard 可以猜7次");
difficulty = scan.nextInt();
switch (difficulty) {
case 1:
difficultyLevel = 12;
break;
case 2:
difficultyLevel = 9;
break;
case 3:
difficultyLevel = 7;
break;
default:
break;
}
return difficultyLevel;
}
/**
* 接受用戶輸入的數(shù)字
*/
public int[] inputNums(int n) {
@SuppressWarnings("resource")
Scanner scan = new Scanner(System.in);
int b = scan.nextInt();
for (int i = 0; i < inputNumsArray.length; i++) {
int c = (int) ((int) b / Math.pow(10, 3 - i));
inputNumsArray[i] = c;
b = (int) (b - c * Math.pow(10, (3 - i)));
}
return inputNumsArray;
}
/**
* 數(shù)字比對(duì)的方法
*/
public String compare(int[] answer, int[] inputs) {
for (int i = 0; i < answer.length; i++) {
if (inputs[i] == answer[i]) {
aA += 1;
continue;
} else {
for (int j = 0; j < answer.length; j++) {
if (inputs[i] == answer[j]) {
bB += 1;
}
}
}
}
str = "" + aA + "A " + bB + "B ";
return str;
}
/**
* 整個(gè)游戲過程代碼
*/
public void play() {
randNums(4);
for (int i = 0; i < Nums.length; i++) {
numberStr = numberStr + Nums[i];
}
selectLevel();
System.out.println("你選擇了難度系數(shù):" + difficulty + " 共有:" + difficultyLevel
+ "次機(jī)會(huì)。");
for (int i = 0; i < difficultyLevel; i++) {
inputNums(4);
int chanceNums = difficultyLevel - i - 1;
compare(Nums, inputNumsArray);
if (aA != 4) {
if (chanceNums == 0) {
System.out.println("機(jī)會(huì)用完了,答案是:" + numberStr);
break;
} else {
System.out.println(str + " 你還有" + chanceNums + "次機(jī)會(huì)");
}
aA = 0;
bB = 0;
} else if (aA == 4) {
System.out.println("恭喜你,答對(duì)了");
break;
}
}
}
public static void main(String[] args) {
NumberCode a = new NumberCode();
a.play();
}
}
運(yùn)行結(jié)果:
請(qǐng)選擇難度系數(shù)(輸入數(shù)字),1:Easy 可以猜12次;2:Common 可以猜9次;3:Hard 可以猜7次
1
你選擇了難度系數(shù):1 共有:12次機(jī)會(huì)。
0123
0A 2B 你還有11次機(jī)會(huì)
2345
2A 0B 你還有10次機(jī)會(huì)
5678
2A 0B 你還有9次機(jī)會(huì)
7890
0A 2B 你還有8次機(jī)會(huì)
2378
恭喜你,答對(duì)了
運(yùn)行效果如下圖:

更多關(guān)于java算法相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java數(shù)學(xué)運(yùn)算技巧總結(jié)》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。
相關(guān)文章
Java實(shí)現(xiàn)遞歸查詢樹結(jié)構(gòu)的示例代碼
我們?cè)趯?shí)際開發(fā)中,肯定會(huì)用到樹結(jié)構(gòu),如部門樹、菜單樹等等。Java后臺(tái)利用遞歸思路進(jìn)行構(gòu)建樹形結(jié)構(gòu)數(shù)據(jù),返回給前端,能以下拉菜單等形式進(jìn)行展示。今天,咱們就來說說怎么樣將List集合轉(zhuǎn)換成TreeList2022-11-11
Spring ApplicationContext接口功能詳細(xì)介紹
ApplicationContext是Spring應(yīng)用程序中的中央接口,由于繼承了多個(gè)組件,使得ApplicationContext擁有了許多Spring的核心功能,如獲取bean組件,注冊(cè)監(jiān)聽事件,加載資源文件等2023-02-02
Java局部內(nèi)部類和匿名內(nèi)部類定義與用法實(shí)例分析
這篇文章主要介紹了Java局部內(nèi)部類和匿名內(nèi)部類,結(jié)合實(shí)例形式分析了java局部內(nèi)部類和匿名內(nèi)部類相關(guān)定義、原理與用法,需要的朋友可以參考下2019-08-08
java web監(jiān)聽器統(tǒng)計(jì)在線用戶及人數(shù)
本文主要介紹了java web監(jiān)聽器統(tǒng)計(jì)在線用戶及人數(shù)的方法解析。具有很好的參考價(jià)值。下面跟著小編一起來看下吧2017-04-04

