最简单且有BUG的一段
package ;
import .*;
public class GuestNum {
public static void main(String[] ags) {
int i;
int num = (int) (() * 100);
int b;
String answer;
Scanner input = new Scanner();
("请猜 0~100中间的数字");
for (i = 1; i <= 10; i++) {
b = ();
if (b < num) {
("小了!请继续!");
continue;
} else if (b > num) {
("大了!晴继续!");
continue;
} else {
("猜对了!");
}
switch (i) {
case 1:
("你太有才了");
break;
case 2:
case 3:
case 4:
case 5:
case 6:
("这么快就猜出来了");
break;
case 7:
case 8:
case 10:
("半天才才出来");
break;
}
}
}
}
输出:
请猜 0~100中间的数字
50
大了!晴继续!
25
小了!请继续!
35
小了!请继续!
40
小了!请继续!
45
小了!请继续!
46
小了!请继续!
47
小了!请继续!
48
小了!请继续!
49
猜对了!
BUG在于:1.要是猜了10次没猜出来,没有提示,程序直接卡死
2.没有显示猜数用了多少时间
3.功能不全,仅仅是比较,而没有用二分查找的算法
修改了一下,增加了计数功能:
package ;
import .*;
public class GuestNum {
public static void main(String[] ags) {
int i;
int num = (int) (() * 100);
int b;
String answer;
Scanner input = new Scanner();
("请猜 0~100中间的数字");
for (i = 1; i <= 10; i++) {
b = ();
if (b < num) {
("小了!请继续!");
continue;
} else if (b > num) {
("大了!晴继续!");
continue;
} else {
("猜对了!");
}
switch (i) {
case 1:
("你太有才了");
break;
case 2:
case 3:
case 4:
case 5:
case 6:
("这么快就猜出来了");
break;
case 7:
case 8:
case 10:
("半天才才出来");
break;
}
("您一共猜了"+i+"次");
}
}
}
输出:
请猜 0~100中间的数字
50
小了!请继续!
75
大了!晴继续!
60
大了!晴继续!
56
大了!晴继续!
54
大了!晴继续!
52
大了!晴继续!
51
猜对了!
半天才才出来
您一共猜了7次
看了网上的一些资料,修改总结,优化代码如下:
package ;
import ;
import ;
import ;
import ;
public class GuessGame {
public static void compareNum()
{
int count=1;
try
{
//获取随机产生的数字
int random=(int)(()*100+1);
for(int i=1;;i++) {
//使用BufferedReader读入数据流
BufferedReader br=new BufferedReader(new InputStreamReader());
("请猜数");
int keyBoardNum=(());//获取键盘输入的数字
//比较两数的大小
if(keyBoardNum!=random)
{
if(keyBoardNum>random)
{
("大了,请继续");
}
else
{
("小了,请继续");
}
count++;
}
else
{
("随机数是"+random);
("您猜了"+count+"次");
("恭喜你猜对了,你的战斗力是:"+(float)(1-i/10.0)*100);
break;
}
if(i>=10)
{
("超过次数,尚需努力");
("正确答案是:");
break;
}
}
}catch (Exception e) {
("输入错误,请重新输入");
}
}
public static void GameSet()
{
("游戏难度设置:1:容易2.一般3.难");
int select=getInput();
switch(select)
{
case 1:Easy();break;
case 2:Middle();break;
case 3:Difficult();break;
default:("程序结束");
return;
}
}
public static int getInput()
{
int res=-1;
try {
Scanner x=new Scanner();
res=();
}catch(Exception e) {
("非法输入,请重新选择:");
}
return res;
}
public static void Easy()
{
int count=1;
int random=(int)(()*100+1);
try {
for(int i=1;;i++) {
BufferedReader br=new BufferedReader(new InputStreamReader());
("请猜数");
int keyBoardNum=(());
if(keyBoardNum!=random)
{
if(keyBoardNum>random) {
("大了,请继续");
}
else
{
("小了,请继续");
}
count++;
}
else
{
("随机数是"+random);
("您一共猜了"+count+"次");
("恭喜你猜对了,你的战斗力是:"+(1-(i-1)/10.0)*100);
break;
}
if(i>=10)
{
("超过次数,尚需努力");
("正确答案是:");
break;
}
}
}catch(Exception e)
{
("输入错误,请重新输入:");
}
}
public static void Middle()
{
int count=1;
try {
int random=(int)(()*100+1);
for(int i=1;;i++) {
BufferedReader br=new BufferedReader(new InputStreamReader());
("请猜数");
int keyBoardNum=(());
if(keyBoardNum!=random)
{
if(keyBoardNum>random) {
("大了,请继续");
}
else
{
("小了,请继续");
}
count++;
}
else
{
("随机数是"+random);
("您一共猜了"+count+"次");
("恭喜你猜对了,你的战斗力是:"+(1-(i-1)/8.0)*100);
break;
}
if(i>=8)
{
("超过次数,尚需努力");
("正确答案是:");
break;
}
}
}catch(Exception e)
{
("输入错误,请重新输入:");
}
}
public static void Difficult()
{
int count=1;
try {
int random=(int)(()*100+1);
for(int i=1;;i++) {
BufferedReader br=new BufferedReader(new InputStreamReader());
("请猜数");
int keyBoardNum=(());
if(keyBoardNum!=random)
{
if(keyBoardNum>random) {
("大了,请继续");
}
else
{
("小了,请继续");
}
count++;
}
else
{
("随机数是"+random);
("您一共猜了"+count+"次");
("恭喜你猜对了,你的战斗力是:"+(1-(i-1)/6.0)*100);
break;
}
if(i>=6)
{
("超过次数,尚需努力");
("正确答案是:");
break;
}
}
}catch(Exception e)
{
("输入错误,请重新输入:");
}
}
//主窗体
public static int readSelect(BufferedReader br)
{
int select=0;
while(true)
{
try {
("请输入您的选择");
String s=();
select=(s);
if(select>=1&&select<=3)
break;
("无效选择");
}catch(Exception e)
{
("请输入数字");
}
}
return select;
}
//主函数
public static void main(String[] args) {
("请输入一个(0-100)之间的一个数");
BufferedReader br=new BufferedReader(new InputStreamReader());
while(true)
{
("1.开始猜数");
("2.游戏参数设置");
("3.退出");
int select=readSelect(br);
switch(select)
{
case 1:compareNum();break;
case 2:GameSet();break;
case 3:("游戏结束");return;
}
}
}
}
输出:
请输入一个(0-100)之间的一个数 1.开始猜数 2.游戏参数设置 3.退出 请输入您的选择 2 游戏难度设置:1:容易2.一般3.难 3 请猜数 50 大了,请继续 请猜数 75 大了,请继续 请猜数 25 小了,请继续 请猜数 30 小了,请继续 请猜数 35 小了,请继续 请猜数 40 小了,请继续 超过次数,尚需努力 正确答案是: 1.开始猜数 2.游戏参数设置 3.退出 请输入您的选择