java猜数游戏实验小结_JAVA猜数游戏程序小研究

时间:2025-02-14 13:50:09

最简单且有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.退出 请输入您的选择