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. vue 中获取到数据点击失效

    // var data = Object.assign([],ret.t); //动态创建dom后点击 元素不添加背景色 Object.assign(复制下)

  2. html第七节课

    document 1.Window.document对象 一.找到元素: docunment.getElementById("id"):根据id找,最多找一个:    var a ...

  3. HDU 2415 Bribing FIPA

    Bribing FIPA Time Limit: 1000ms Memory Limit: 32768KB This problem will be judged on HDU. Original I ...

  4. nginx配置文件使用

    nginx进程数,建议设置为等于CPU总核心数. worker_processes 8; 全局错误日志定义类型,[ debug | info | notice | warn | error | cri ...

  5. wcf--知识点

    WCF创建自托管服务 //自托管 WCF服务 //1.创建宿主 ServiceHost host = new ServiceHost(typeof(TaoBaoWCFServiceContract.T ...

  6. Linux排序命令sort(转)

    Linux sort命令用于将文本文件内容加以排序.sort可针对文本文件的内容,以行为单位来排序. 语法 sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符&g ...

  7. Unix(AIX) set命令

    Unix(AIX) set命令,set命令是shell所具有的,不仅仅是aix自己有的: set -o vi  可以用vi方式操作,用来获取已经输入过的命令: 如果希望自动设置,可以在.profile ...

  8. Android——推断Service是否已经启动

    延续百度地图定位的Demo.採用Service来进行百度定位,并且将数据上传到server上遇到了一个问题:在真机中使用清理内存来关闭程序的之后,Service会被关闭,可是过几秒中,它又会自己主动重 ...

  9. 关于Linux静态库和动态库的分析

    关于Linux静态库和动态库的分析 关于Linux静态库和动态库的分析 1.什么是库 在windows平台和linux平台下都大量存在着库. 本质上来说库是一种可运行代码的二进制形式.能够被操作系统加 ...

  10. #leetcode#Anagrames

    Given an array of strings, return all groups of strings that are anagrams. Note: All inputs will be ...