Java 方法的应用
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 方法的应用的更多相关文章
- C++调用JAVA方法详解
C++调用JAVA方法详解 博客分类: 本文主要参考http://tech.ccidnet.com/art/1081/20050413/237901_1.html 上的文章. C++ ...
- JNI中C调用Java方法
背景需求 我们需要在JNI的C代码调用Java代码.实现原理:使用JNI提供的反射借口来反射得到Java方法,进行调用. JNI关键方法讲解. 1. 在同一个类中,调用其他方法 JNIEXPORT v ...
- Atitit java方法引用(Method References) 与c#委托与脚本语言js的函数指针
Atitit java方法引用(Method References) 与c#委托与脚本语言js的函数指针 1.1. java方法引用(Method References) 与c#委托与脚本语言js ...
- C#调用Java方法(详细实例)
C#可以直接引用C++的DLL和转换JAVA写好的程序.最近由于工作原因接触这方面比较多,根据实际需求,我们通过一个具体例子把一个JAVA方法转换成可以由C#直接调用的DLL C#调用c++ C#调用 ...
- Android C代码回调java方法
本文将讲述下列三种C代码回调java方法 1.c代码回调java空方法 2.c代码回调java int类型参数方法 3.c代码回调javaString类型参数方法 方法都差不多,先看c代码回调java ...
- oracle调用java方法的例子(下面所有代码都是在sql/plus中写)
在Oracle中调用Java程序,注意:java方法必须是static类型的,如果想在JAVA中使用system.out/err输出log. 需要在oracle 中执行"call dbms_ ...
- Js调用Java方法并互相传参
Js通过PhoneGap调用Java方法并互相传参的. 一.JAVA代码 写一个类,该类继承自Plugin并重写execute方法. import org.json.JSONArray; import ...
- HAL中通过JNI调用java方法【转】
转载请注明本文出处:http://www.cnblogs.com/xl19862005 作者:Xandy 由于工作的需要,最近一直在研究HAL.JNI.Java方法之间互调的问题,并做了如下一些记录和 ...
- wrong number of arguments,java方法反射时数组参数的坑
java方法中只有一个参数是数组,反射的时候我们不能想当然的传歌数组进去,传数组进去的时候表示多个参数. 两个数组不是一个意思啊. 我们应该把数组转为objet,这样才表示一个参数. import j ...
- JAVA 方法或者类的注释快捷键
JAVA 方法或者类的注释快捷键 /*** 登录验证* @param 传入的* @return* @throws Exception*/这种注释效果 方法: 1.先敲“/”在敲两个**,然后回车 方法 ...
随机推荐
- package、folder和source folder的区别
在用myeclipse工具开发java的过程中,新建目录时发现会有package,folder和source folder等不同类型的选项, 因此在网上搜集了一些资料:如下 以下文章转自:https: ...
- Lua习题练习(9*9乘法表,输出所指定的图像,斐波那契数列)
1. (循环语句的嵌套使用)有 1,2,3,4四个数字,能组成多少个互不相同且无重复数字的 三位数,并输出在屏幕上面2. 计算斐波那携数列的前20个数字,并输出在屏幕上面 .指的是这样一个数列(1,1 ...
- VirtualBox安装增强包实现文件共享
环境: win10 64位 Virtualbox 5.1.30 ubuntu-16.04.3-server-amd64.iso 1. 安装好ubuntu后,打开virtualbox安装路径文件夹,找到 ...
- Python之scrapy linkextractors使用错误
1.环境及版本 python3.7.1+scrapy1.5.1 2.问题及错误代码详情 优先贴上问题代码,如下: import scrapy from scrapy.linkextractors im ...
- 使用requirejs模块化开发多页面一个入口js的使用方式
描述 知道requirejs的都知道,每一个页面需要进行模块化开发都得有一个入口js文件进行模块配置.但是现在就有一个很尴尬的问题,如果页面很多的话,那么这个data-main对应的入口文件就会很多. ...
- 【hihocoder 1499】A Box of Coins
[题目链接]:http://hihocoder.com/problemset/problem/1499 [题意] [题解] 贪心,模拟; 从左往右对于每一列; 如果上下两个格子; ① 有一个格子超过了 ...
- 哈哈,找到一种方式来简单模拟EXTJS中与服务器的AJAX交互啦。
一直在测试客户端的EXTJS,但遇到服务器端就麻烦了,要建库,要写JSON,要有HTTP返回值. 今天测试了一个简单的方法,经过测试是OK了. 那,就是Python的SimpleHTTPServer模 ...
- 洛谷——P1361 小猫爬山
https://www.luogu.org/problem/show?pid=1361#sub 题目描述 WD和LHX饲养了N只小猫,这天,小猫们要去爬山.经历了千辛万苦,小猫们终于爬上了山顶,但是疲 ...
- JAVAEE之-----MySQL分页技术(带搜索)
需求: 为什么须要採用分页技术呢?在数据库中我们查询数据的时候,须要将数据返回到显示页面.数据库中含有大量数据,所有显示在一个页面过于太多,所以我们须要採用分页技术.每一页显示不同数据. 主要解决这个 ...
- PowerPC汇编指令集
PowerPC 体系结构规范(PowerPC Architecture Specification)公布于 1993 年,它是一个 64位规范 ( 也包括 32 位子集 ).差点儿全部常规可用的 Po ...