zoukankan      html  css  js  c++  java
  • Java 方法的应用

    Java方法可以理解为C#中的函数,都是把复杂的问题简单化,按模块,按功能区分,分别完成各个部分在调用这些方法完成整个功能。

    方法的综合练习,猜数字的实现:

    代码要求:

    生成不重复的4位数字(只有1--9)
    然后用户竞猜,总共最多只能猜7次
    每次都是输入4位数字,按照标准,
    分为数字存在(记录为B);
    数字存在且位置正确(记录为A)
    例如: 生成数字1234
    竞猜数字: 1367(提示竞猜结论: 1A1B)
    如果1次就中了,提示: 我的神啊!
    如果2次就中了,提示: 您是天才啊!
    如果3次就中了,提示: 您也是个人才!
    如果4次就中了,提示: 不错不错啊
    如果5次就中了,提示: 哟,厉害了哟!
    如果6次就中了,提示: 呵呵,很好
    如果7次就中了,提示: 终于对了,好难啊!

    思路:猜数字分为: 1.随机提取不同的四位数;

              2.输入猜测的四位数;

              3.判断猜测是否正确

              4.根据猜测次数做出输出语句

     

      1 package Hw0414;
      2 
      3 import java.util.Scanner;
      4 
      5 public class Hw01 {
      6 
      7     public static void main(String[] args) {
      8         System.out.println("			游戏 猜数字");
      9         System.out.println(
     10                 "游戏规则:
    1.生成不重复的4位数字(只有1--9)然后用户竞猜;
    2.总共最多只能猜7次每次都是输入4位数字;
    3.按照标准,分为数字存在(记录为B);数字存在且位置正确(记录为A);");
     11         System.out.println("			1.开始游戏
    2.退出游戏");
     12         Scanner sc = new Scanner(System.in);
     13         int a = sc.nextInt();
     14         int[] nums = new int[4];
     15         int[] num = new int[4];
     16         try {
     17             Thread.sleep(1000);
     18         } catch (InterruptedException e) {
     19             e.printStackTrace();
     20         }
     21         if (a == 2)// 判断是退出游戏
     22         {
     23             System.out.println("game over");
     24             System.exit(a);
     25 
     26         }
     27         nums = shuzi(a);// 调用方法shuzi将产生的四位随机数存入nums
     28         for (int i = 0; i < nums.length; i++)
     29             System.out.print(nums[i]);
     30         shuchu(panduan(nums, a));// 调用输出语句,在输出语句的实参为判断方法返回的判断次数
     31     }
     32 
     33     /**
     34      * 输出长度为四但是彼此不想的的数组
     35      * 
     36      * @param a开始游戏信号
     37      * @return 需要猜的数字
     38      */
     39     public static int[] shuzi(int a) {
     40         int[] nums = new int[4];
     41         int count = 0;
     42         while (count < 4) {
     43             if (count == 0) {
     44                 nums[count] = (int) (Math.random() * 9 + 1);
     45             } else {
     46                 int temp = (int) (Math.random() * 9 + 1);// 随机产生的数字不能相同
     47                 nums[count] = temp;
     48                 for (int i = 0; i < count; i++) {
     49                     if (nums[count] == nums[i]) {
     50                         count--;
     51                         break;
     52                     }
     53                 }
     54             }
     55             count++;
     56         }
     57         return nums;
     58     }
     59 
     60     /**
     61      * 输入您需要猜测的数字
     62      * 
     63      * @param 确认输入信号
     64      * @return猜测数字存入数组返回
     65      */
     66     public static int[] caice(int a) {
     67         while (true) {
     68             System.out.println("
    
    	请输入您要猜测的数字(四位数)");
     69             int[] num = new int[4];
     70             Scanner sc = new Scanner(System.in);
     71             int input = sc.nextInt();
     72             int count = 0;
     73             if (input >= 1000 && input <= 9999) {
     74                 num[0] = input / 1000 % 10;
     75                 num[1] = input / 100 % 10;
     76                 num[2] = input / 10 % 10;
     77                 num[3] = input % 10;
     78                 for (int i = 0; i < num.length - 1; i++) {
     79                     for (int j = i; j < num.length; j++) {
     80                         if (num[i] != num[j]) {
     81                             count++;
     82                         }
     83                     }
     84                 }
     85                 if (count == 6) {
     86                     return num;
     87                 } else {
     88                     System.out.println("输入错误,数字不能相等");
     89                 }
     90             } else {
     91                 System.out.println("您的输入错误请重新输入");
     92             }
     93         }
     94     }
     95 
     96     /**
     97      * 判断输入并且输出相应的提示
     98      * 
     99      * @param 随机数组
    100      * @param 游戏开始信号
    101      * @return猜了多少次猜对了
    102      */
    103     public static int panduan(int[] nums, int a) {
    104         int[] num = new int[4];
    105         int count = 0;// 猜测次数计数器
    106         while (true) {
    107             num = caice(a);// 判断语句内部调用猜测方法
    108             System.out.println();
    109             int b = 0;// 数字正确且在位置计数器
    110             int c = 0;// 数字存在且不在位置计数器
    111 
    112             for (int i = 0; i < num.length; i++) {
    113                 for (int j = 0; j < nums.length; j++)
    114                     if (num[i] == nums[j])// 判断输入数字和答案数字有无相同,位置数字相同b++,数字存在位置不对
    115                     {
    116                         if (i == j) {
    117                             b++;
    118                         } else {
    119                             c++;
    120                         }
    121                     }
    122             }
    123             count++;// 猜测次数计数器
    124             System.out.println("您还剩" + (7 - count) + "次");
    125             if (b == 4)// 猜测都对
    126             {
    127                 return count;
    128             } else
    129                 try {
    130                     Thread.sleep(500);
    131                 } catch (InterruptedException e) {
    132                     e.printStackTrace();
    133                 }
    134             System.out.print("	输入的数字为:");
    135             for (int i = 0; i < num.length; i++) {
    136                 System.out.print(num[i]);
    137             }
    138             System.out.println("	提示:" + b + "A" + c + "B
    	加油,再接再厉");
    139             if (count == 7) {
    140                 System.out.println("抱歉您的机会以及用完 ");
    141                 return 0;
    142             }
    143         }
    144     }
    145 
    146     /**
    147      * 输出语句
    148      * 
    149      * @param a输入猜测的次数
    150      */
    151     public static void shuchu(int a) {
    152         try {
    153             Thread.sleep(500);
    154         } catch (InterruptedException e) {
    155             e.printStackTrace();
    156         }
    157         switch (a) {
    158         case 1:
    159             System.out.println("我的神啊!");
    160             break;
    161         case 2:
    162             System.out.println("您是天才啊!");
    163             break;
    164         case 3:
    165             System.out.println("您也是个人才!");
    166             break;
    167         case 4:
    168             System.out.println("不错不错啊");
    169             break;
    170         case 5:
    171             System.out.println(" 哟,厉害了哟!");
    172             break;
    173         case 6:
    174             System.out.println("呵呵,很好");
    175             break;
    176         case 7:
    177             System.out.println("终于对了,好难啊!");
    178         default:
    179             System.out.println("GAME OVER");
    180         }
    181     }
    182 }

    总结:

      方法能够很好的将复杂问题简单化,分而治之,首先对问题的分解,当能够很好地将问题分解为多部分,只需要将每部分完成,后调用每个部分完成整个问题及可,在方法调用时注意参数列表和返回值这个两个部分,正确的配置参数列表合理的利用方法。

  • 相关阅读:
    题解 [APIO2014]连珠线
    题解 [ZJOI2019]语言
    题解 Hero meet devil
    题解 [BJOI2019]奥术神杖
    题解「2017 山东一轮集训 Day1 / SDWC2018 Day1」Set
    题解 Sue的小球/名次排序问题/方块消除/奥运物流
    题解 「一本通 5.4 练习 1」涂抹果酱
    Mybatis的类型转换
    面试题:微服务熔断降级限流
    面试题:微服务网关
  • 原文地址:https://www.cnblogs.com/zxiaoyuer/p/6750489.html
Copyright © 2011-2022 走看看