当前位置:   article > 正文

java 实现猜数字游戏_java猜数字游戏

java猜数字游戏

一.游戏规则

输入不重复的4位数,输出A:1,B:1,

其中A表示位置和数字都正确,B表示数字正确位置不正确

假如用户输入1234,随机数为1405 输出为A:1,B: 2,

 用户输入1432,随机数为1405 输出为A:2,B: 2,

二.实现思路

   1.获取用户输入,判断输入是否正确,使用递归,如果不正确一直提示输入直到正确为止

   2.生成不重复的随机数,使用洗牌算法。

   3.判断数据是否正确,如果条件全部满足直接跳出循环

三.代码实现

  1. import java.util.Random;
  2. import java.util.Scanner;
  3. public class game {
  4. public static void main(String[] args) {
  5. // i次数,y位数
  6. System.out.println(mathgame(6, 4));
  7. }
  8. // 用户输入
  9. public static double panduan(int y) {
  10. System.out.println("输入" + y + "位整数数");
  11. Scanner scanner = new Scanner(System.in);
  12. double userinput = scanner.nextDouble();
  13. if (userinput < (1 * Math.pow(10, y - 1)) || userinput > (1 * Math.pow(10, y) - 1)) {
  14. System.out.println("输入错误");
  15. return panduan(y);
  16. }
  17. if (userinput % 1 != 0) {
  18. System.out.println("请不要输入小数");
  19. return panduan(y);
  20. }
  21. return userinput;
  22. }
  23. // 不重复的随机数
  24. public static int rodem(int lan) {
  25. Random r = new Random();
  26. // 生成0-9随机数
  27. int arr[] = new int[10];
  28. for (int i = 0; i < arr.length; i++) {
  29. arr[i] = i;
  30. }
  31. for (int i = 0; i < lan; i++) {
  32. int rodem = r.nextInt(arr.length - i);
  33. int temp = arr[lan - 1 - i];
  34. arr[lan - 1 - i] = arr[rodem];
  35. arr[rodem] = temp;
  36. }
  37. // 判断第一项不能为0
  38. if (arr[0] == 0) {
  39. int temp = arr[0];
  40. int m = arr[r.nextInt(lan-1)+1];
  41. arr[0] = m;
  42. arr[m] = temp;
  43. }
  44. int result = 0;
  45. for (int i = 0; i < lan; i++) {
  46. result = result * 10 + arr[i];
  47. }
  48. return result;
  49. }
  50. public static String mathgame(int i, int y) {
  51. // 随机数
  52. String random = String.valueOf((int) rodem(y));
  53. // a表示位置和数字都对
  54. // b表示数字对顺序不对
  55. int a = 0;
  56. int b = 0;
  57. String result="失败了";
  58. for (int n = 0; n < i; n++) {
  59. a = 0;
  60. b = 0;
  61. // 获取用户输入
  62. String userinput = String.valueOf((int) panduan(y));
  63. // System.out.println(userinput + "用户输入的数据");
  64. // System.out.println(random + "随机数");
  65. // 判断a
  66. for (int nft = 0; nft < y; nft++) {
  67. // 处理数据判断
  68. if (random.charAt(nft) == userinput.charAt(nft)) {
  69. a += 1;
  70. }
  71. // 判断b
  72. for (int nb = 0; nb < y; nb++) {
  73. if (random.charAt(nft) == userinput.charAt(nb)) {
  74. b += 1;
  75. break;
  76. }
  77. }
  78. }
  79. System.out.println("A:" + a + "B:" + b);
  80. if (a==y){
  81. result="成功了";
  82. break;
  83. }
  84. }
  85. return result;
  86. }
  87. ;
  88. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/233935?site
推荐阅读
相关标签
  

闽ICP备14008679号