Java入门第27课——猜数字游戏V2.0
问题
使用do-while语句实现猜数字游戏,界面的交互过程和上一个案例相同。
方案
此案例的实现方案和之前的案例类似。
首先,此案例中,需要产生一个1到1000之间的随机数,该数值就是用户要猜测的结果;然后,提示用户进行第一个猜测,并得到用户从界面所录入的数字。
因为猜测的次数不确定,则使用do-while循环来构建猜测的过程:判断用户所猜测的数字是否与结果相同,只要猜测不正确,则循环继续。每次循环中,首先判断用户录入的数字是否为0,如果是,则使用break退出循环;否则,根据比较结果输出提示信息("太大了"或者"太小了"),并提示用户继续下一次猜测。
如果用户猜测正确或者录入数字0,则循环结束。循环结束后,需要判断用户最后一次所录入的数字,如果猜测正确,则提示用户"恭喜,你猜对了!";如果录入的为数字0,则提示用户"真遗憾,下次再挑战吧!",然后程序结束。程序的流程如图所示:
步骤
实现此案例需要按照如下步骤进行。
步骤一:定义类及main方法
首先定义一个名为NumberGuessV03的类,并在类中添加Java应用程序的主方法main,代码如下所示:
public class NumberGuessV03{
public static void main(String[] args){
}
}
步骤二:准备录入
在main方法中,生成一个随机数作为猜测的结果,然后实例化Scanner类,用于接收用户从控制台输入的数字,还需要声明变量用于存储用户所录入的数字。代码如下所示:
import java.util.Scanner;
public class NumberGuessV03{
public static void main(String[] args){
//生成一个随机数作为猜测的结果
int num=(int)(Math.random()*1000)+1;
//准备输入
Scanner s=new Scanner(System.in);
int guest=-1;
}
}
注意:此步骤中,需要导入java.util包下的Scanner类。
步骤三:构建循环
使用do-while循环,提示用户进行猜测,并调用Scanner类的nextInt方法接收用户录入的数字,然后判断用户所猜测的数字是否与结果相同:只要猜测不正确,则循环继续。
每次循环中,需要使用if-else结构判断用户所录入的数字。首先,判断录入的数字是否为0,如果为0,表示用户希望退出游戏,则使用break退出循环;然后比较猜测的数字和实际数字的大小,并根据比较结果输出提示信息(“太大了”或者"太小了")。代码如下所示:
import java.util.Scanner;
public class NumberGuessV03{
public static void main(String[] args){
//生成一个随机数作为猜测的结果
int num=(int)(Math.random()*1000)+1;
//准备输入
Scanner s=new Scanner(System.in);
int guest=-1;
do{
System.out.print("请输入你猜测的数字(1-1000),退出请按0:");
guest=s.nextInt();
//判断:输入0,则中止
if(guest==0){
break;
}else if(guest>num){
System.out.println("太大了");
}else if(guest<num){
System.out.println("太小了");
}
}while(guest!=num);
}
}
步骤四:游戏结束
import java.util.Scanner;
public class NumberGuessV03{
public static void main(String[] args){
//生成一个随机数作为猜测的结果
int num=(int)(Math.random()*1000)+1;
//准备输入
Scanner s=new Scanner(System.in);
int guest=-1;
do{
System.out.print("请输入你猜测的数字(1-1000),退出请按0:");
guest=s.nextInt();
//判断:输入0,则中止
if(guest==0){
break;
}else if(guest>num){
System.out.println("太大了");
}else if(guest<num){
System.out.println("太小了");
}
}while(guest!=num);
//提示用户最终效果
if(guest==num){
System.out.println("恭喜,你猜对了!");
}else{
System.out.println("真遗憾,下次再挑战吧!");
}
s.close();
}
}