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. 【剑指Offer】52、正则表达式匹配

      题目描述:   请实现一个函数用来匹配包括'.'和'*'的正则表达式.模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次). 在本题中,匹配是指字符串的所有字符匹 ...

  2. Golang Gin实践 番外 请入门 Makefile

    Golang Gin实践 番外 请入门 Makefile 原文地址:Golang Gin实践 番外 请入门 Makefile 前言 含一定复杂度的软件工程,基本上都是先编译 A,再依赖 B,再编译 C ...

  3. Golang - 并发编程

    目录 Golang - 并发编程 1. 并行和并发 2. go语言并发优势 3. goroutine是什么 4. 创建goroutine 5. runtime包 6. channel是什么 7. ch ...

  4. 洛谷 P1595 信封问题

    题目描述 某人写了n封信和n个信封,如果所有的信都装错了信封.求所有信都装错信封共有多少种不同情况. 输入输出格式 输入格式: 一个信封数n 输出格式: 一个整数,代表有多少种情况. 输入输出样例 输 ...

  5. hdu 1829 带权并查集的运用类似于食物链但是更简单些

    #include<stdio.h> #define N 1100000 struct node { int x,y; }f[N],pre[N]; int find(int x) { if( ...

  6. 0419MySQL 中 Join 的基本实现原理

    转自http://www.kuqin.com/database/20081206/29717.html 简朝阳 JOIN的用法你真的知道吗? 在 MySQL 中,只有一种 Join 算法,就是大名鼎鼎 ...

  7. HDU 4530

    今天让人看不起了,话说好伤心,说我搞了ACM那么久都没获得拿得出手的奖.... 今晚爷爷我要狂刷2013腾讯马拉松的水题,奶奶滴,哈哈哈哈...T_T #include <iostream> ...

  8. C#之简易猜数字游戏

    游戏规则说明: 由系统生成一个随机数,玩家有三次猜数字的机会,如果在三次内猜出数字反馈玩家猜对了,否则Game Over! 代码设计说明: 1.首先设计一个简易的欢迎界面,并提示玩家是否开始游戏: p ...

  9. Unity3D 射线指定层获取GameObject 注意 LayerMask

    这一篇是纯技术讨论,看过我前面文章的童鞋应该清楚,我的奔跑是靠鼠标响应的,鼠标点到哪就跑到哪,后来又有了界面,麻烦就来了,我的界面居然能点 穿.我不希望点界面的时候还能点到界面后面的地面上,角色傻不拉 ...

  10. C++关键知识

    <精通MFC>第一章节整理复习 //c++编程技术要点 /* //1.虚函数及多态的实现 //演示多态技术 #include <iostream> using namespac ...