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

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

代码要求:

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

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

          2.输入猜测的四位数;

          3.判断猜测是否正确

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

 

 package Hw0414;

 import java.util.Scanner;

 public class Hw01 {

     public static void main(String[] args) {
System.out.println("\t\t\t游戏 猜数字");
System.out.println(
"游戏规则:\n1.生成不重复的4位数字(只有1--9)然后用户竞猜;\n2.总共最多只能猜7次每次都是输入4位数字;\n3.按照标准,分为数字存在(记录为B);数字存在且位置正确(记录为A);");
System.out.println("\t\t\t1.开始游戏\n2.退出游戏");
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int[] nums = new int[4];
int[] num = new int[4];
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
if (a == 2)// 判断是退出游戏
{
System.out.println("game over");
System.exit(a); }
nums = shuzi(a);// 调用方法shuzi将产生的四位随机数存入nums
for (int i = 0; i < nums.length; i++)
System.out.print(nums[i]);
shuchu(panduan(nums, a));// 调用输出语句,在输出语句的实参为判断方法返回的判断次数
} /**
* 输出长度为四但是彼此不想的的数组
*
* @param a开始游戏信号
* @return 需要猜的数字
*/
public static int[] shuzi(int a) {
int[] nums = new int[4];
int count = 0;
while (count < 4) {
if (count == 0) {
nums[count] = (int) (Math.random() * 9 + 1);
} else {
int temp = (int) (Math.random() * 9 + 1);// 随机产生的数字不能相同
nums[count] = temp;
for (int i = 0; i < count; i++) {
if (nums[count] == nums[i]) {
count--;
break;
}
}
}
count++;
}
return nums;
} /**
* 输入您需要猜测的数字
*
* @param 确认输入信号
* @return猜测数字存入数组返回
*/
public static int[] caice(int a) {
while (true) {
System.out.println("\n\n\t请输入您要猜测的数字(四位数)");
int[] num = new int[4];
Scanner sc = new Scanner(System.in);
int input = sc.nextInt();
int count = 0;
if (input >= 1000 && input <= 9999) {
num[0] = input / 1000 % 10;
num[1] = input / 100 % 10;
num[2] = input / 10 % 10;
num[3] = input % 10;
for (int i = 0; i < num.length - 1; i++) {
for (int j = i; j < num.length; j++) {
if (num[i] != num[j]) {
count++;
}
}
}
if (count == 6) {
return num;
} else {
System.out.println("输入错误,数字不能相等");
}
} else {
System.out.println("您的输入错误请重新输入");
}
}
} /**
* 判断输入并且输出相应的提示
*
* @param 随机数组
* @param 游戏开始信号
* @return猜了多少次猜对了
*/
public static int panduan(int[] nums, int a) {
int[] num = new int[4];
int count = 0;// 猜测次数计数器
while (true) {
num = caice(a);// 判断语句内部调用猜测方法
System.out.println();
int b = 0;// 数字正确且在位置计数器
int c = 0;// 数字存在且不在位置计数器 for (int i = 0; i < num.length; i++) {
for (int j = 0; j < nums.length; j++)
if (num[i] == nums[j])// 判断输入数字和答案数字有无相同,位置数字相同b++,数字存在位置不对
{
if (i == j) {
b++;
} else {
c++;
}
}
}
count++;// 猜测次数计数器
System.out.println("您还剩" + (7 - count) + "次");
if (b == 4)// 猜测都对
{
return count;
} else
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.print("\t输入的数字为:");
for (int i = 0; i < num.length; i++) {
System.out.print(num[i]);
}
System.out.println("\t提示:" + b + "A" + c + "B\n\t加油,再接再厉");
if (count == 7) {
System.out.println("抱歉您的机会以及用完 ");
return 0;
}
}
} /**
* 输出语句
*
* @param a输入猜测的次数
*/
public static void shuchu(int a) {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
switch (a) {
case 1:
System.out.println("我的神啊!");
break;
case 2:
System.out.println("您是天才啊!");
break;
case 3:
System.out.println("您也是个人才!");
break;
case 4:
System.out.println("不错不错啊");
break;
case 5:
System.out.println(" 哟,厉害了哟!");
break;
case 6:
System.out.println("呵呵,很好");
break;
case 7:
System.out.println("终于对了,好难啊!");
default:
System.out.println("GAME OVER");
}
}
}

总结:

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

Java 方法的应用的更多相关文章

  1. C++调用JAVA方法详解

    C++调用JAVA方法详解          博客分类: 本文主要参考http://tech.ccidnet.com/art/1081/20050413/237901_1.html 上的文章. C++ ...

  2. JNI中C调用Java方法

    背景需求 我们需要在JNI的C代码调用Java代码.实现原理:使用JNI提供的反射借口来反射得到Java方法,进行调用. JNI关键方法讲解. 1. 在同一个类中,调用其他方法 JNIEXPORT v ...

  3. Atitit java方法引用(Method References) 与c#委托与脚本语言js的函数指针

    Atitit java方法引用(Method References) 与c#委托与脚本语言js的函数指针   1.1. java方法引用(Method References) 与c#委托与脚本语言js ...

  4. C#调用Java方法(详细实例)

    C#可以直接引用C++的DLL和转换JAVA写好的程序.最近由于工作原因接触这方面比较多,根据实际需求,我们通过一个具体例子把一个JAVA方法转换成可以由C#直接调用的DLL C#调用c++ C#调用 ...

  5. Android C代码回调java方法

    本文将讲述下列三种C代码回调java方法 1.c代码回调java空方法 2.c代码回调java int类型参数方法 3.c代码回调javaString类型参数方法 方法都差不多,先看c代码回调java ...

  6. oracle调用java方法的例子(下面所有代码都是在sql/plus中写)

    在Oracle中调用Java程序,注意:java方法必须是static类型的,如果想在JAVA中使用system.out/err输出log. 需要在oracle 中执行"call dbms_ ...

  7. Js调用Java方法并互相传参

    Js通过PhoneGap调用Java方法并互相传参的. 一.JAVA代码 写一个类,该类继承自Plugin并重写execute方法. import org.json.JSONArray; import ...

  8. HAL中通过JNI调用java方法【转】

    转载请注明本文出处:http://www.cnblogs.com/xl19862005 作者:Xandy 由于工作的需要,最近一直在研究HAL.JNI.Java方法之间互调的问题,并做了如下一些记录和 ...

  9. wrong number of arguments,java方法反射时数组参数的坑

    java方法中只有一个参数是数组,反射的时候我们不能想当然的传歌数组进去,传数组进去的时候表示多个参数. 两个数组不是一个意思啊. 我们应该把数组转为objet,这样才表示一个参数. import j ...

  10. JAVA 方法或者类的注释快捷键

    JAVA 方法或者类的注释快捷键 /*** 登录验证* @param 传入的* @return* @throws Exception*/这种注释效果 方法: 1.先敲“/”在敲两个**,然后回车 方法 ...

随机推荐

  1. PAT_A1151#LCA in a Binary Tree

    Source: PAT A1151 LCA in a Binary Tree (30 分) Description: The lowest common ancestor (LCA) of two n ...

  2. unittest的case和报告生成方法

    #coding=utf-8from appium import webdriverimport unittestimport HTMLTestRunnerclass CaseTest(unittest ...

  3. 【剑指Offer】49、把字符串转换成整数

      题目描述:   将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数. 数值为0或者字 ...

  4. matlab 读取输入数组

    In an assignment A(I) = B, the number of elements in B and I must be the same MATLAB:index_assign_el ...

  5. 【Leetcode】【简单】【682棒球比赛】【JavaScript】

    题目 682. 棒球比赛 你现在是棒球比赛记录员.给定一个字符串列表,每个字符串可以是以下四种类型之一:1.整数(一轮的得分):直接表示您在本轮中获得的积分数.2. "+"(一轮的 ...

  6. emmmmmm(官宣?)

    实验室永远不会是学习的唯一地点,不是吗? 总后悔当初退竞赛,现在却还是选择退出,大概是自己真的不适合吧...

  7. Redis学习笔记(一)-持久化

    一.RDB持久方式 RDB持久化是把当前进程的数据已快照的形式保存到硬盘的过程. 触发方式: 1.手动触发命令:save和bgsave save:阻塞式,内存较大的实例在执行过程中会造成长时间的阻塞, ...

  8. 1.IDEA的安装

    .1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.

  9. vue 注册全局组件

    注册全局组件有啥好处呢? 提高代码的复用性:哪里需要写哪里,贼方便,就写一个标签:减少代码量:可以再配合slot一起使用,咦~~,舒服 为了让整个项目的可读性,我创建一个文件统一存放全局组件 1.创建 ...

  10. android下xml放哪儿?

    1.用Project->Deployment,打开发布文件窗口,增加要发布的文件.然后设置文件发布的位置Remote Path,填写为assets\internal\ 2.代码 varp: st ...