这里介绍使用java来实现猜四位不重复数字,直到猜正确程序结束;中间互动通过控制台来完成。
规则:
系统随机生成四位不重复的数字(以下简称随机数),您只需要猜中这个随机数,每一次猜会给出返回值。A代表位置相同,B代表数字相同。
eg:有一个位置相同系统提示‘1A1B’,有一个数字相同但是位置不对提示‘0A1B’,猜中2个数,一个数位置相同提示‘1A2B’,猜中4位数且位置都不对提示‘0A4B’。
开发步骤:
1,获取随机四位不重复的数字
2,获取用户输入数字并判断是否相同
3,获取结果打印出提示语句
1. 首先我们要生成四位不重复的数,通过Random生成四位数的随机数,然后循坏判断是否有重复的数字。
public static String numBuilder(){
//结果变量
String num1 = "";
Random random = new Random();
while (true){
//是否重复标志
boolean flag = false;
int i = random.nextInt(9999);
String num = i+"";
int length1 = num.length();
if(length1==4){
//循坏判断数字是否重复
for (int j = 0; j < length1; j++) {
for (int k = j+1; k < length1; k++) {
if(num.charAt(j) == num.charAt(k)){
flag = true;
break;
}
}
if(flag == true){
break;
}
}
if(flag == false){
num1 = i+"";
break;
}
}
}
return num1;
}
2.判断用户猜测数字与系统随机数是否一致。
/**
*
* @param num 实际的数。
* @param guessNum 猜的数。
* @return
*/
public static String guessNum(String num,String guessNum){
boolean f = false;
//先判断位置是否相同
int contLocationRight = 0;
int contRightNum = 0;
for (int i = 0; i < guessNum.length(); i++) {
//判断位置相同的
if(guessNum.charAt(i) == num.charAt(i)){
contLocationRight++;
}
for (int j = 0; j < num.length(); j++) {
if(guessNum.charAt(i)==num.charAt(j)){
contRightNum++;
}
}
}
return contLocationRight+"A"+contRightNum+"B";
}
3. main方法测试,这里因为要循环一直到用户猜正确为止,使用while循环实现。并且完善了提示语和查看答案所以main方法比较长,可以删除一些代码。这儿两个都列一下!
3.1 没完善的代码
public static void main(String[] args){
String num1 = numBuilder();
Scanner scanner = new Scanner(System.in);
int count=0;
while (true){
count++;
System.out.print("请输入您猜的数字:");
String inputNum = scanner.next();
if(inputNum.equals("****")){
System.out.println("系统随机数为:"+num1);
count--;
continue;
}
if(inputNum.length()!=4){
System.out.println("你输入的数字不是四位数,请重新输入!");
count--;
continue;
}
//获取输入的数字
String result = guessNum(num1, inputNum);
//结果输出
if("4A4B".equals(result)){
System.out.println("恭喜您,猜中正确数字,您一共猜了"+count+"次.");
break;
}else {
System.out.println("—————————");
System.out.println(result);
System.out.println("—————————");
}
}
}
测试结果截图:
3.2 完善后的测试代码
public static void main(String[] args){
String[] arr = {"别让你的脑子睡大觉!",
"其实每一个人都拥有智慧,但有些人做了智慧的傀儡,而有一些人则做了智慧的主人。",
"学习本应不是墨守陈规,而是去不断思考与领悟!",
"创造靠智慧,处世靠常识;有常识而无智慧,谓之平庸,有智慧而无常识,谓之笨拙。",
"什么,他还没猜对?你带多几个人,多带几个家伙?看看它的的脑袋用来干什么的啊?是用来装水的吗?",
"莫等闲,白了少年头,空悲切",
"你是不是经常熬夜,脑子都不转",
"汝脑入水,锈也。",
"都说一孕傻三年,你是怀孕了吗?",
"可能真的是岁数大了吧,你脑子越来越不好使了。"};
Random random = new Random();
//获取四位不重复数字。
String num1 = numBuilder();
System.out.println("----------------------------========---------------------------------");
System.out.println("游戏规则:");
System.out.println( "\t系统随机生成四位不重复的数字(以下简称随机数),您只需要猜中这个随机数,\n" +
"每一次猜会给出返回参数。A代表位置相同,B代表数字相同。\n"+
"\teg:有一个位置相同系统提示‘1A1B’,有一个数字相同但是位置不对提示‘0A1B’,\n" +
"猜中2个数,一个数位置相同提示‘1A2B’,猜中4位数且位置都不对提示‘0A4B’。\n" +
"注:单位数字取值范围为(0~9)。");
System.out.println("----------------------------========---------------------------------");
Scanner scanner = new Scanner(System.in);
int count=0;
while (true){
count++;
System.out.print("请输入您猜的数字:");
String inputNum = scanner.next();
if(inputNum.equals("****")){
System.out.println("系统随机数为:"+num1);
count--;
continue;
}
if(inputNum.equals("支付成功")){
count--;
System.out.println("输入****查看结果");
continue;
}
if(inputNum.length()!=4){
System.out.println("你输入的数字不是四位数,请重新输入!");
count--;
continue;
}
//获取输入的数字
String result = guessNum(num1, inputNum);
//结果输出
if("4A4B".equals(result)){
if(count==1){
System.out.println("======++======++======++======++======++======++======++======++");
System.out.println("恭喜您,猜中正确数字,您一共猜了"+count+"次,荣获‘后无来者’称号!");
System.out.println("======++======++======++======++======++======++======++======++");
}
else if(count<3){
System.out.println("======++======++======++======++======++======++======++======++");
System.out.println("恭喜您,猜中正确数字,您一共猜了"+count+"次,荣获‘前无古人’称号!");
System.out.println("======++======++======++======++======++======++======++======++");
}
else if(count<5){
System.out.println("======++======++======++======++======++======++======++======++");
System.out.println("恭喜您,猜中正确数字,您一共猜了"+count+"次,荣获‘举世无双’称号!");
System.out.println("======++======++======++======++======++======++======++======++");
}
else if(count<9){
System.out.println("======++======++======++======++======++======++======++======++");
System.out.println("恭喜您,猜中正确数字,您一共猜了"+count+"次,荣获‘最强大脑’称号!");
System.out.println("======++======++======++======++======++======++======++======++");
}else if(count<12){
System.out.println("======++======++======++======++======++======++======++======++");
System.out.println("恭喜您,猜中正确数字,您一共猜了"+count+"次,荣获‘足智多谋’称号!");
System.out.println("======++======++======++======++======++======++======++======++");
}else {
System.out.println("======++======++======++======++======++======++======++======++");
System.out.println("恭喜您,猜中正确数字,您一共猜了"+count+"次,荣获‘平庸之才’称号!");
System.out.println("======++======++======++======++======++======++======++======++");
}
break;
}else {
System.out.println(result);
System.out.println("—————————=—————————");
}
if(count==9||count==13||count>=16){
System.out.println("你也太逊了吧,您可以支付0.5元获取正确答案!");
if(count==16){
System.out.println("输入'****'查看正确答案");
}
}
if(count>11){
int i = random.nextInt(10);
System.out.println(arr[i]);
}
}
}
测试截图:
多次会有更多的提示,这里运气好就没有触发更多的提示,可以自己尝试一下 。
有更多小游戏可以评论留言,有机会下次发布。
版权归属作者(CY_99),未经许可,严禁转载!
可以分享该篇博客——2021-12-27