老程序员教女儿学习java从一个简单的猜数游戏开始
为了教会女儿学习java花了三天的下班时间编写了一个java猜数字游戏,为了让她感兴趣,同时能理解编程的思路,可惜目标没有达成,现在共享给大家学习。
package test;
import java.util.Random;
import java.util.Scanner;
public class GuestNumber {
private static boolean repeat = false;
private static boolean success = false;
/**
* @param args
*/
public static void main(String[] args) {
System.out.println("猜数字游戏规则:\n 系统将自动生成4个不重复的数字,您有10次机会输入4个从1-9的不重复的数字来猜这4个数字;\n 当您猜中某个数字时,系统显示1个B,猜中2个显示2B,以此类推;\n 当这个数字的位置也正确时,系统显示1个A,两个数字位置正确显示2A,以此类推;\n 当4个数字都猜中时游戏结束!\n 系统已经生成一个4位不重复的数字,现在游戏开始!");
int d = 1;
String[] guest = generateRandomArray(4);
//System.out.println("$$$$$$$$$$$$"+transform(guest));
while (d != 10) {
if (success) {
int f = d -1;
System.out.println("恭喜您,您共使用"+ f +"次猜中了该数字!");
break;
};
System.out.print("第"+d+"次:请输入1-9内的4个不重复的数字:");
Scanner sacn = new Scanner(System.in);
String st = sacn.next();
if (checkLength(st)) {
String[] e = checkRepeat(st);
if (!repeat) {
System.out.println("您猜测的结果是:"+than(e, guest));
};
}
d++;
}
if (d == 10 && !success) {
System.out.println("您猜数字已经超过10次!该数字是:" + transform(guest));
}
}
private static boolean checkLength(String s) {
if (s == null || s.equals("")) {
System.out.print("输入4位数字!\n");
return false;
}
try{
Integer.parseInt(s);
}catch(NumberFormatException e) {
System.out.print("输入4位数字!\n");
return false;
}
if (s.length() < 4) {
System.out.print("输入的数字小于4位数,请重新输入!\n");
}
if (s.length() > 4) {
System.out.print("输入的数字大于4位数,请重新输入!\n");
}
if (s.length() == 4) {
return true;
}
return false;
}
private static String[] checkRepeat(String s) {
repeat = false;
String[] t = new String[4];
for (int i =0; i < s.length(); i++) {
t[i] = String.valueOf(s.charAt(i));
}
int a = 3;
while (a != 0) {
for (int x = 0; x < a; x++) {
if (t[a].equals(t[x])) {
repeat = true;
System.out.print("输入的数字中有重复数字,请重新输入!\n");
}
}
a--;
}
return t;
}
public static String than(String[] input, String[] random) {
int precise = 0;
int include = 0;
StringBuffer result = new StringBuffer();
for (int a = 0; a < input.length; a ++) {
for (int b = 0; b < random.length; b++) {
if (a == b && input[a].equals(random[b])) {
precise ++;
if (precise == 4) {
success = true;
}
}else
if (input[a].equals(random[b])) {
include ++;
}
}
}
result.append(String.valueOf(precise) + "A");
result.append(String.valueOf(include) + "B");
return result.toString();
}
public static String[] generateRandomArray(int size){
String[] s = new String[size];
Integer range = 10;
Random ran = new Random();
int i = 0;
while(s[size -1] == null){
Integer tmp = ran.nextInt(range);
if (tmp != 0) {
int a = i;
boolean b = false;
while (a != 0) {
if (String.valueOf(tmp).equals(s[a-1])) {
b = true;
}
a--;
}
if (!b) {
s[i] = String.valueOf(tmp);
i ++;
}
}
}
return s;
}
private static String transform(String[] s) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < s.length; i ++) {
sb.append(s[i]);
}
return sb.toString();
}
}
老程序员教女儿学习java从一个简单的猜数游戏开始相关推荐
- 10开发Python老程序员教你学习Python的的几大秘诀
Python 是一门优雅而又不失实用的语言,它语法简单很容易学会,又具有极高的可读性和灵活性.在知乎上 Python 是受关注最多的编程语言.很遗憾在我初学的时候没有知乎这样的平台提供这么多的资源,甚 ...
- 老程序员吐槽,今天面试了一个被培训班坑了的学生
随着互联网热别是移动互联网的兴起,市场上对程序员的需求越来越大,程序员的工资相比其它行业也高,所以很多培训机构瞄准了这个市场,这也引起了市场上培训机构良莠不齐,某公司资深程序员面试完一个培训班出来的学 ...
- 程序员成长之旅——Delphi实现一个简单的科学计算器
程序员成长之旅--Delphi实现一个简单的科学计算器 目标效果 组件以及开发环境 最终呈现 源码GITHUB 目标效果 组件以及开发环境 delphi7版本及以上,这里我用delphi10.4进行的 ...
- 用Java写一个简单的回合制游戏
用Java写一个简单的回合制游戏 创建基本属性,血量,名字,技能,技能伤害. 如下: public class One3 {//创建三个属性private String name;private St ...
- 【转】一个40岁老程序员的前端学习之路|2021 年中总结
40岁的老程序员感言 时光给我留下了什么? 不知不觉间虚度了40年光阴,看着父母逐渐的苍老和孩子逐渐长大,看着自己发福的身材,已知道自己在这个陌生的城市里已经扎根,估计是很难再去哪里了.回首故里似乎和 ...
- 送书 | 一位60后老程序员从零学习Python的感悟
AI时代,Python因其语法流畅.上手简单.生态强大,被越来越多的企业和个人所青睐,成为大数据.人工智能的首选编程语言,由于Python的扩展性强大,在其他几乎所有领域,甚至办公.小游戏等,都可以迅 ...
- 一个40岁老程序员的前端学习之路|2021 年中总结
40岁的老程序员感言 时光给我留下了什么? 不知不觉间虚度了40年光阴,看着父母逐渐的苍老和孩子逐渐长大,看着自己发福的身材,已知道自己在这个陌生的城市里已经扎根,估计是很难再去哪里了.回首故里似乎和 ...
- 无聊的时候怎么办?教你用java写一个简单挂机打金币小游戏吧!
无聊的时候怎么办?教你用java写一个超简单挂机打金币小游戏吧! Java写一个挂机打金币程序 1.Java的面向对象 2.基础打金的分析 3. Robot介绍以及Demo演示 4.挂机打金程序如何去 ...
- 现在企业编程用java还是python_想转行做程序员,是学习 Java 还是 Python 更好?
只有小孩子才做选择,我都要 我们学习的目的是为了更好的就业,那当然Java就是首先,然后在学Python 下面给你谈谈我为什么建议你先学Java JAVA的市场占有率相当高,因其广泛的应用型和不易出错 ...
最新文章
- 博客阅读学习笔记-目录
- Matlab中pickic_法语「野餐」怎么写?不是picnic哦
- 第18天学习Java的笔记-ArrayList
- pb 执行存储过程带参数_数据库存储过程
- 淘宝+天猫+闲鱼卖的翻新货店家汇总(持续更新)
- Qt网络程序:基于TCP的服务器、客户端实例
- element文件上传有文件但是后台接收为空_程序员提高篇:大规格文件(G)是如何做分片优化的?...
- DAL调用SP时出现的异常处理
- nginx+uwsgi部署Django
- 磁卡门锁怎么配卡_样式多的铜工艺品怎么设计请查看_江西南昌皇巢|铜门||别墅铜门|...
- Oralce定时任务实际应用
- JavaScript 学习笔记— —Arguments
- Linux 运维工程师学习成长路线上要经历哪四个阶段?
- LINUX下载并编译sqlite
- 《程序员代码面试指南》第三章 二叉树问题 判断t1树是否包含t2树全部的拓扑结构...
- lighttp 配置php扩展包,Lighttpd配置
- 怎么用matlab进行频域分析法,如何用Matlab进行频域分析?
- zkeacms mysql_在Docker中运行纸壳CMS并配置使用MySql
- 【算法】整数拆分问题
- PowerCHM-强大的CHM工具