这是我课后的一个作业
在学习Java之前,我已经写过C语言的猜数游戏,所以开始写代码之前已经有了一定的思路
1.起始代码
在最开始我们先定义两个input和random对象,便于后续对变量赋值。然后让程序帮我们生成一个随机数赋值给i。最后定义一个布尔类型,便于后续进行判断。
在这里我多加了一个细节,就是用户最多猜的次数,为20次。
public class Guessnumber {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
Random random = new Random();
int i = random.nextInt(1000) + 1; // 因为要求数的范围时1~1000,所以需要在随机生成的数的范围上+1
int j = 20;
int p = 20;
boolean flag = false;
System.out.println("机器人已生成一个1~1000的随机数");
System.out.println("请您输入一个整数,猜出这个随机数:");
2.判断代码
在while循环体内,我们让用户输入一个数。然后用if-else嵌套判断,这个数是大了还是小了,还是正好相等。
1.数小了
- 当用户输入的数小于程序随机生成的数时,让总共能猜的次数自减1
- 当次数<=5时,打印一句有意思的提示语句
- 当次数=0时,跟用户说出正确答案,游戏结束,同时把true赋值给flag
if (b < i) {
j--;
System.out.println("您猜的数小了,您还剩下" + j + "次机会了哦~");
if (j <= 5) {
System.out.println("哥们醒醒,再这样下去没机会了!猜的这么小,难道有什么难言之隐吗?请注意:你只剩下" + j + "次机会了");
}
if (j == 0) {
System.out.println("不好意思了朋友,你还是猜的小了,正确答案是" + i + ",你已经没机会继续了,请重新开始这场游戏吧");
flag = true;
}
}
2.数大了
- 当用户输入的数大于程序随机生成的数时,让总共能猜的次数自减1
- 当次数<=5时,打印一句有意思的提示语句
- 当次数=0时,跟用户说出正确答案,游戏结束,同时把true赋值给flag
if (b > i) {
j--;
System.out.println("您猜的数大了,您还剩下" + j + "次机会了哦~");
if (j <= 5) {
System.out.println("哥们醒醒,再这样下去没机会了!不是,你猜的这么大,难道是不会猜小一点的数吗?请注意:你只剩下" + j + "次机会了");
}
if (j == 0) {
System.out.println("不好意思了朋友,你还是猜的大了,正确答案是" + i + ",你已经没机会继续了,请重新开始这场游戏吧");
System.out.println("你说你猜这么大干嘛,不会是故意的吧");
flag = true;
}
}
3.数相等
- 当用户输入的数等于程序随机生成的数时,那么就判断j多大,并分别打印有意思的话。并告诉用户正确答案的值,同时最后将true赋值给flag
- 还要注意一个细节,告诉用户一共用了几次机会才把这个数才出来
- 但是会发现如果直接用p-j的话,次数会少一次,最后猜的那次。所以我们要再+1。
if (j >= 18) {
System.out.println("正确答案就是" + i + "!恭喜您!您太棒啦!只用了" + (p - j + 1) + "次就猜对了!");
flag = true;
} else if (j >= 12) {
System.out.println("正确答案就是" + i + "!还不错哦,您只用了" + (p - j + 1) + "次就猜对了!");
flag = true;
} else if (j >= 6) {
System.out.println("没错,正确答案是" + i + ",但是运气可能不太好哦,用了" + (p - j + 1) + "次才猜出来,下次加油吧");
flag = true;
} else if (j >= 3) {
System.out.println("好好好,正确答案确实是" + i + ",但是你小子不会在瞎猜吧,居然用了" + (p - j + 1) + "次才猜对0.0,下次不许这样了!");
flag = true;
} else if (j == 0) {
System.out.println("呼~你小子,我还以为你猜不出来了,幸好最后一次机会你把握住了,猜出来了" + i);
flag = true;
}
3.完整代码
为什么在上述有些判断语句中要把true赋值给flag,那是因为while循环的条件是flag不等于true。所以当游戏结束之后,要将flag的值变成true,不然就会变成死循环,循环不能停止。
import java.util.*;
public class Guessnumber {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
Random random = new Random();
int i = random.nextInt(1000) + 1; // 因为要求数的范围时1~1000,所以需要在随机生成的数的范围上+1
int j = 20;
int p = 20;
boolean flag = false;
System.out.println("机器人已生成一个1~1000的随机数");
System.out.println("请您输入一个整数,猜出这个随机数:");
while (flag != true) {
int b = input.nextInt();
if (b < i) {
j--;
System.out.println("您猜的数小了,您还剩下" + j + "次机会了哦~");
if (j <= 5) {
System.out.println("哥们醒醒,再这样下去没机会了!猜的这么小,难道有什么难言之隐吗?请注意:你只剩下" + j + "次机会了");
}
if (j == 0) {
System.out.println("不好意思了朋友,你还是猜的小了,正确答案是" + i + ",你已经没机会继续了,请重新开始这场游戏吧");
flag = true;
}
} else if (b > i) {
j--;
System.out.println("您猜的数大了,您还剩下" + j + "次机会了哦~");
if (j <= 5) {
System.out.println("哥们醒醒,再这样下去没机会了!不是,你猜的这么大,难道是不会猜小一点的数吗?请注意:你只剩下" + j + "次机会了");
}
if (j == 0) {
System.out.println("不好意思了朋友,你还是猜的大了,正确答案是" + i + ",你已经没机会继续了,请重新开始这场游戏吧");
System.out.println("你说你猜这么大干嘛,不会是故意的吧");
flag = true;
}
} else {
if (j >= 18) {
System.out.println("正确答案就是" + i + "!恭喜您!您太棒啦!只用了" + (p - j + 1) + "次就猜对了!");
flag = true;
} else if (j >= 12) {
System.out.println("正确答案就是" + i + "!还不错哦,您只用了" + (p - j + 1) + "次就猜对了!");
flag = true;
} else if (j >= 6) {
System.out.println("没错,正确答案是" + i + ",但是运气可能不太好哦,用了" + (p - j + 1) + "次才猜出来,下次加油吧");
flag = true;
} else if (j >= 3) {
System.out.println("好好好,正确答案确实是" + i + ",但是你小子不会在瞎猜吧,居然用了" + (p - j + 1) + "次才猜对0.0,下次不许这样了!");
flag = true;
} else if (j == 0) {
System.out.println("呼~你小子,我还以为你猜不出来了,幸好最后一次机会你把握住了,猜出来了" + i);
flag = true;
}
}
}
}
}
4.分析
猜数游戏是一个很基础的循环结构,判断结构的运用,难度也不大,在自己写的代码中可以增加很多细节,让这个游戏变得更加有趣。
至此,本篇文章完毕,谢谢各位观看。