616
技术社区[云栖]
JAVA猜数游戏程序小研究
最简单且有BUG的一段
package com.zzk.cn;
import java.util.*;
public class GuestNum {
public static void main(String[] ags) {
int i;
int num = (int) (Math.random() * 100);
int b;
String answer;
Scanner input = new Scanner(System.in);
System.out.println("请猜 0~100中间的数字");
for (i = 1; i <= 10; i++) {
b = input.nextInt();
if (b < num) {
System.out.println("小了!请继续!");
continue;
} else if (b > num) {
System.out.println("大了!晴继续!");
continue;
} else {
System.out.println("猜对了!");
}
switch (i) {
case 1:
System.out.println("你太有才了");
break;
case 2:
case 3:
case 4:
case 5:
case 6:
System.out.println("这么快就猜出来了");
break;
case 7:
case 8:
case 10:
System.out.println("半天才才出来");
break;
}
}
}
}
输出:
请猜 0~100中间的数字
50
大了!晴继续!
25
小了!请继续!
35
小了!请继续!
40
小了!请继续!
45
小了!请继续!
46
小了!请继续!
47
小了!请继续!
48
小了!请继续!
49
猜对了!
BUG在于:1.要是猜了10次没猜出来,没有提示,程序直接卡死
2.没有显示猜数用了多少时间
3.功能不全,仅仅是比较,而没有用二分查找的算法
修改了一下,增加了计数功能:
package com.zzk.cn;
import java.util.*;
public class GuestNum {
public static void main(String[] ags) {
int i;
int num = (int) (Math.random() * 100);
int b;
String answer;
Scanner input = new Scanner(System.in);
System.out.println("请猜 0~100中间的数字");
for (i = 1; i <= 10; i++) {
b = input.nextInt();
if (b < num) {
System.out.println("小了!请继续!");
continue;
} else if (b > num) {
System.out.println("大了!晴继续!");
continue;
} else {
System.out.println("猜对了!");
}
switch (i) {
case 1:
System.out.println("你太有才了");
break;
case 2:
case 3:
case 4:
case 5:
case 6:
System.out.println("这么快就猜出来了");
break;
case 7:
case 8:
case 10:
System.out.println("半天才才出来");
break;
}
System.out.println("您一共猜了"+i+"次");
}
}
}
输出:
请猜 0~100中间的数字
50
小了!请继续!
75
大了!晴继续!
60
大了!晴继续!
56
大了!晴继续!
54
大了!晴继续!
52
大了!晴继续!
51
猜对了!
半天才才出来
您一共猜了7次
看了网上的一些资料,修改总结,优化代码如下:
package com.zzk.cn;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
public class GuessGame {
public static void compareNum()
{
int count=1;
try
{
//获取随机产生的数字
int random=(int)(Math.random()*100+1);
for(int i=1;;i++) {
//使用BufferedReader读入数据流
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.println("请猜数");
int keyBoardNum=Integer.parseInt(br.readLine());//获取键盘输入的数字
//比较两数的大小
if(keyBoardNum!=random)
{
if(keyBoardNum>random)
{
System.out.println("大了,请继续");
}
else
{
System.out.println("小了,请继续");
}
count++;
}
else
{
System.out.println("随机数是"+random);
System.out.println("您猜了"+count+"次");
System.out.println("恭喜你猜对了,你的战斗力是:"+(float)(1-i/10.0)*100);
break;
}
if(i>=10)
{
System.out.println("超过次数,尚需努力");
System.out.println("正确答案是:");
break;
}
}
}catch (Exception e) {
System.out.println("输入错误,请重新输入");
}
}
public static void GameSet()
{
System.out.println("游戏难度设置:1:容易 2.一般 3.难");
int select=getInput();
switch(select)
{
case 1:Easy();break;
case 2:Middle();break;
case 3:Difficult();break;
default:System.out.println("程序结束");
return;
}
}
public static int getInput()
{
int res=-1;
try {
Scanner x=new Scanner(System.in);
res=x.nextInt();
}catch(Exception e) {
System.out.println("非法输入,请重新选择:");
}
return res;
}
public static void Easy()
{
int count=1;
int random=(int)(Math.random()*100+1);
try {
for(int i=1;;i++) {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.println("请猜数");
int keyBoardNum=Integer.parseInt(br.readLine());
if(keyBoardNum!=random)
{
if(keyBoardNum>random) {
System.out.println("大了,请继续");
}
else
{
System.out.println("小了,请继续");
}
count++;
}
else
{
System.out.println("随机数是"+random);
System.out.println("您一共猜了"+count+"次");
System.out.println("恭喜你猜对了,你的战斗力是:"+(1-(i-1)/10.0)*100);
break;
}
if(i>=10)
{
System.out.println("超过次数,尚需努力");
System.out.println("正确答案是:");
break;
}
}
}catch(Exception e)
{
System.out.println("输入错误,请重新输入:");
}
}
public static void Middle()
{
int count=1;
try {
int random=(int)(Math.random()*100+1);
for(int i=1;;i++) {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.println("请猜数");
int keyBoardNum=Integer.parseInt(br.readLine());
if(keyBoardNum!=random)
{
if(keyBoardNum>random) {
System.out.println("大了,请继续");
}
else
{
System.out.println("小了,请继续");
}
count++;
}
else
{
System.out.println("随机数是"+random);
System.out.println("您一共猜了"+count+"次");
System.out.println("恭喜你猜对了,你的战斗力是:"+(1-(i-1)/8.0)*100);
break;
}
if(i>=8)
{
System.out.println("超过次数,尚需努力");
System.out.println("正确答案是:");
break;
}
}
}catch(Exception e)
{
System.out.println("输入错误,请重新输入:");
}
}
public static void Difficult()
{
int count=1;
try {
int random=(int)(Math.random()*100+1);
for(int i=1;;i++) {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.println("请猜数");
int keyBoardNum=Integer.parseInt(br.readLine());
if(keyBoardNum!=random)
{
if(keyBoardNum>random) {
System.out.println("大了,请继续");
}
else
{
System.out.println("小了,请继续");
}
count++;
}
else
{
System.out.println("随机数是"+random);
System.out.println("您一共猜了"+count+"次");
System.out.println("恭喜你猜对了,你的战斗力是:"+(1-(i-1)/6.0)*100);
break;
}
if(i>=6)
{
System.out.println("超过次数,尚需努力");
System.out.println("正确答案是:");
break;
}
}
}catch(Exception e)
{
System.out.println("输入错误,请重新输入:");
}
}
//主窗体
public static int readSelect(BufferedReader br)
{
int select=0;
while(true)
{
try {
System.out.println("请输入您的选择");
String s=br.readLine();
select=Integer.parseInt(s);
if(select>=1&&select<=3)
break;
System.out.println("无效选择");
}catch(Exception e)
{
System.out.println("请输入数字");
}
}
return select;
}
//主函数
public static void main(String[] args) {
System.out.println("请输入一个(0-100)之间的一个数");
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
while(true)
{
System.out.println("1.开始猜数");
System.out.println("2.游戏参数设置");
System.out.println("3.退出");
int select=readSelect(br);
switch(select)
{
case 1:compareNum();break;
case 2:GameSet();break;
case 3:System.out.println("游戏结束");return;
}
}
}
}
输出:
请输入一个(0-100)之间的一个数
1.开始猜数
2.游戏参数设置
3.退出
请输入您的选择
2
游戏难度设置:1:容易 2.一般
3.难
3
请猜数
50
大了,请继续
请猜数
75
大了,请继续
请猜数
25
小了,请继续
请猜数
30
小了,请继续
请猜数
35
小了,请继续
请猜数
40
小了,请继续
超过次数,尚需努力
正确答案是:
1.开始猜数
2.游戏参数设置
3.退出
请输入您的选择
最后更新:2017-04-02 06:52:18
上一篇:
高性能计算与高性能计算机讲座笔记
下一篇:
操作数组的常用方式二-----排序、查找
BookKeeper设计介绍及其在Hadoop2.0 Namenode HA方案中的使用分析
SSM springmvc java 进销存 商户 库存 多用户管理系统 项目源码
silverlight 4 tools for visual studio 2010无法安装
zoj 2770 Burn the Linked Camp 差分约束
互联网企业安全高级指南1.3 互联网企业和传统企业在安全建设中的区别
两个简单的扩展方法:TrimPrefix和TrimSuffix
阿里又开挂了!全球首台全浸没液冷服务器“麒麟”横空出世!
创新源于模仿之二:美化ListView的尝试
测试多线程对多核cpu的分支预测的影响
优秀职场人常用的那些办公辅助工具分享