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 }

总结:

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

原文地址:https://www.cnblogs.com/zxiaoyuer/p/6750489.html