有猜数字游戏,其游戏规则为:程序内置一个 1 到 1000 之间的数字作为猜测的结果,由用户猜测此数字。用户每猜测一次,由系统提示猜测结果:大了、小了或者猜对了;直到用户猜对结果,则提示游戏结束。用户可以提前退出游戏,即,游戏过程中,如果用户录入数字0,则游戏终止。游戏的交互过程如下:
1. 游戏刚开始,即提示用户在控制台录入所猜测的数字,交互过程如图-1所示:
图-1
2、用户录入所猜测的数字后,程序进行判断:如果用户所猜测的数字大于结果,则提示“太大了!”;如果用户所猜测的数字小于结果,则提示“太小了”。每次提示猜测结果后,并提醒用户继续猜测。交互过程如图-2所示:
图-2
3、如果用户猜测正确,则由系统提示“恭喜,你猜对了!”,游戏结束。交互过程如图-3所示:
图-3
4、如果用户希望提前退出游戏,则可以录入数字 0,游戏结束。交互过程如图-4所示:
图-4
首先,此案例中,需要产生一个 1 到 1000 之间的随机整数,该数值就是用户要猜测的结果;然后,提示用户进行第一次猜测,并得到用户从界面所录入的数字。
因为猜测的次数不确定,则使用 while 循环来构建猜测的过程:判断用户所猜测的数字是否与结果相同,只要猜测不正确,则循环继续。每次循环中,首先判断用户录入的数字是否为 0,如果是,则使用 break 退出循环;否则,根据比较结果输出提示信息(“太大了”或者“太小了”),并提示用户继续下一次猜测。
如果用户猜测正确或者录入数字 0,则 while 循环结束。循环结束后,需要判断用户最后一次所录入的数字,如果猜测正确,则提示用户“恭喜,你猜对了!”;如果录入的为数字0 ,则提示用户“真遗憾,下次再挑战吧!”,然后程序结束。程序的流程如图-5所示:
图-20
实现此案例需要按照如下步骤进行。
步骤一:定义类及 main方法
首先定义一个名为 NumberGuessV01 的类,并在类中添加Java应用程序的主方法main,代码如下所示:
public class NumberGuessV01 { public static void main(String[] args) { } }
步骤二:读取第一次猜测结果
在main方法中,提示用户录入所猜测的数字,作为第一次猜测;然后,实例化Scanner类,并调用Scanner类的nextInt 方法接收用户从控制台输入的数字。代码如下所示:
import java.util.Scanner; public class NumberGuessV01 { public static void main(String[] args) { #cold_bold //生成一个随机数作为猜测的结果 #cold_bold int num = (int) (Math.random() * 1000) + 1; #cold_bold #cold_bold //第一次猜测 #cold_bold System.out.print("请输入你猜测的数字(1-1000),退出请按0:"); #cold_bold Scanner s = new Scanner(System.in); #cold_bold int guest = s.nextInt(); } }
注意:此步骤中,需要导入java.util包下的Scanner类。
步骤三:构建循环
使用 while 循环,判断用户所猜测的数字是否与结果相同:只要猜测不正确,则循环继续。每次循环中,需要使用if-else结构判断用户所录入的数字。首先,判断录入的数字是否为 0,如果为 0 ,表示用户希望退出游戏,则使用 break 退出循环;然后比较猜测的数字和实际数字的大小,并根据比较结果输出提示信息(“太大了”或者“太小了”),然后提示用户继续下一次猜测,并调用Scanner类的nextInt 方法接收用户录入的下一个数字。代码如下所示:
import java.util.Scanner; public class NumberGuessV01 { public static void main(String[] args) { //生成一个随机数作为猜测的结果 int num = (int) (Math.random() * 1000) + 1; //第一次猜测 System.out.print("请输入你猜测的数字(1-1000),退出请按0:"); Scanner s = new Scanner(System.in); int guest = s.nextInt(); #cold_bold //如果猜测错误,则继续 #cold_bold while (guest!=num) { #cold_bold //输入为0,则退出循环;否则判断数字 #cold_bold if(guest == 0){ #cold_bold break; #cold_bold } else if (guest > num) { #cold_bold System.out.println("太大了!"); #cold_bold } else { #cold_bold System.out.println("太小了!"); #cold_bold } #cold_bold System.out.print("请输入你猜测的数字(1-1000),退出请按0:"); #cold_bold guest = s.nextInt(); #cold_bold } #cold_bold} }
步骤四:游戏结束
如果用户猜测正确或者录入数字 0 中止游戏,则 while 循环结束。在while 循环结束后,需要判断用户最后一次所录入的数字, 如果猜测正确,则提示用户“恭喜,你猜对了!”;如果录入的为数字0 ,则提示用户“真遗憾,下次再挑战吧!”。最后将 scanner对象关闭,程序结束。代码如下所示:
import java.util.Scanner; public class NumberGuessV01 { public static void main(String[] args) { //生成一个随机数作为猜测的结果 int num = (int) (Math.random() * 1000) + 1; //第一次猜测 System.out.print("请输入你猜测的数字(1-1000),退出请按0:"); Scanner s = new Scanner(System.in); int guest = s.nextInt(); //如果猜测错误,则继续 while (guest!=num) { //输入为0,则退出循环;否则判断数字 if(guest == 0){ break; }else if (guest > num) { System.out.println("太大了!"); } else { System.out.println("太小了!"); } System.out.print("请输入你猜测的数字(1-1000),退出请按0:"); guest = s.nextInt(); } #cold_bold //提示用户最终结果 #cold_bold if(guest == num) { #cold_bold System.out.println("恭喜,你猜对了!"); #cold_bold }else{ #cold_bold System.out.println("真遗憾,下次再挑战吧!"); #cold_bold } #cold_bold s.close(); } }
本案例的完整代码如下所示:
import java.util.Scanner; public class NumberGuessV01 { public static void main(String[] args) { //生成一个随机数作为猜测的结果 int num = (int) (Math.random() * 1000) + 1; //第一次猜测 System.out.print("请输入你猜测的数字(1-1000),退出请按0:"); Scanner s = new Scanner(System.in); int guest = s.nextInt(); //如果猜测错误,则继续 while (guest!=num) { //输入为0,则退出循环;否则判断数字 if(guest == 0){ break; } else if (guest > num) { System.out.println("太大了!"); } else { System.out.println("太小了!"); } System.out.print("请输入你猜测的数字(1-1000),退出请按0:"); guest = s.nextInt(); } //提示用户最终结果 if(guest == num) { System.out.println("恭喜,你猜对了!"); }else{ System.out.println("真遗憾,下次再挑战吧!"); } s.close(); } }
使用 do-while 语句实现猜数字游戏,界面的交互过程和上一个案例相同。
此案例的实现方案和之前的案例类似。
首先,此案例中,需要产生一个 1 到 1000 之间的随机整数,该数值就是用户要猜测的结果;然后,提示用户进行第一次猜测,并得到用户从界面所录入的数字。
因为猜测的次数不确定,则使用do-while 循环来构建猜测的过程:判断用户所猜测的数字是否与结果相同,只要猜测不正确,则循环继续。每次循环中,首先判断用户录入的数字是否为 0,如果是,则使用 break 退出循环;否则,根据比较结果输出提示信息(“太大了”或者“太小了”),并提示用户继续下一次猜测。
如果用户猜测正确或者录入数字 0,则循环结束。循环结束后,需要判断用户最后一次所录入的数字,如果猜测正确,则提示用户“恭喜,你猜对了!”;如果录入的为数字0 ,则提示用户“真遗憾,下次再挑战吧!”,然后程序结束。程序的流程如图-6所示:
图-6
实现此案例需要按照如下步骤进行。
步骤一:定义类及 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) { #cold_bold //生成一个随机数作为猜测的结果 #cold_bold int num = (int) (Math.random() * 1000) + 1; #cold_bold #cold_bold //准备输入 #cold_bold Scanner s = new Scanner(System.in); #cold_bold 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; #cold_bold do{ #cold_bold System.out.print("请输入你猜测的数字(1-1000),退出请按0:"); #cold_bold guest = s.nextInt(); #cold_bold //判断:输入0,则中止 #cold_bold if(guest == 0){ #cold_bold break; #cold_bold } else if(guest > num) { #cold_bold System.out.println("太大了!"); #cold_bold } else if(guest < num){ #cold_bold System.out.println("太小了!"); #cold_bold } #cold_bold }while(guest!=num); } }
步骤四:游戏结束
如果用户猜测正确或者录入数字 0 中止游戏,则循环结束。在循环结束后,需要判断用户最后一次所录入的数字,如果猜测正确,则提示用户“恭喜,你猜对了!”;如果录入的为数字0 ,则提示用户“真遗憾,下次再挑战吧!”。最后将 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; 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); #cold_bold//提示用户最终结果 #cold_bold if(guest == num) { #cold_bold System.out.println("恭喜,你猜对了!"); #cold_bold }else{ #cold_bold System.out.println("真遗憾,下次再挑战吧!"); #cold_bold } #cold_bold s.close(); } }
本案例的完整代码如下所示:
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(); } }
有加法运算器程序,其规则为:程序依次出 10 道加法题目,由用户输入题目的答案。用户每答完一道题,由系统提示结果:答错了或者答对了。10 道题目答完之后,系统计算得分并输出。如果用户希望提前结束,则可以输入-1提前退出。
本案例要求使用交互的方式实现此游戏,交互过程为:
1、程序开始,即出现一道加法题(两个加数均为0到99之间的随机整数),并提示用户输入该题目的答案(输入-1则会提前退出程序)。交互过程如图-7所示:
图-7
2、用户录入后,程序进行判断:如果用户录入的答案错误,则提示“Error!”;如果答案正确,则提示“Correct!”。然后给出下一道题目,并提醒用户继续答题。用户答完10道题目后,系统给出用户的得分并显示(每道题目10分),程序结束。交互过程如图-8所示:
图-8
3、如果用户录入 -1,则表示希望提前退出程序,系统将提示用户的分数,且程序结束。交互过程如图-9所示:
图-9
此案例中,需要使用 for 循环产生 10 道加法题目。
在每次循环中,需要产生两个 0 到 99 之间的随机整数,作为加法题目的两个加数,并计算出正确答案;然后,输出题目,并提示用户进行答题,从而得到用户从界面所录入的数字。
得到用户的录入后,进行判断:如果用户录入的为-1,则需要提前退出循环;如果用户录入的答案错误,则提示“Error!”,并继续下一次答题;如果用户录入的答案正确,则提示“Correct!”,继续下一次答题。
循环结束后,计算用户的得分并输出,程序结束。注:用户得分的规则是,每答对一道题,得10分,满分为100分。
程序的流程如图-10所示:
图-10
实现此案例需要按照如下步骤进行。
步骤一:定义类及 main方法
首先定义一个名为 AdditionTest的类,并在类中添加Java应用程序的主方法main,代码如下所示:
public class AdditionTest { public static void main(String[] args) { } }
步骤二:准备
在main方法中,输出程序即将开始的提示信息,并实例化Scanner类,用于准备接收用户从控制台输入的数字,然后,声明变量 score 用于记载用户的得分。代码如下所示:
import java.util.Scanner; public class AdditionTest { public static void main(String[] args) { #cold_bold System.out.println("将开始 10 次加法测试... "); #cold_bold Scanner scanner = new Scanner(System.in); #cold_bold //用于记载分数 #cold_bold int score = 0; } }
注意:此步骤中,需要导入java.util包下的Scanner类。
步骤三:构建循环
使用 for 语句,构建 10 次循环。
在循环中,使用 Math类的random 方法返回两个 0 到 1 之间的随机数(包含 0,不包含 1),然后将所产生的数值乘以 100,并取其整数部分,则可以生成两个 0 到 99 之间的随机整数(包含0,也包含 99),表示加法题目中的两个加数。
计算加法运算的结果,并输出题目,代码如下:
import java.util.Scanner; public class AdditionTest { public static void main(String[] args) { System.out.println("将开始 10 次加法测试... "); Scanner scanner = new Scanner(System.in); //用于记载分数 int score = 0; #cold_bold //构建 10 次循环 #cold_bold for (int i=1;i<=10;i++) { #cold_bold //随机生成两个加数 #cold_bold int a = (int) (Math.random() * 100); #cold_bold int b = (int) (Math.random() * 100); #cold_bold int result = a + b; #cold_bold #cold_bold //输出需要计算的加法表达式 #cold_bold System.out.println("(" + i + "). " + a + " + " + b + " = ?"); #cold_bold System.out.print("请输入答案(输入-1退出): "); #cold_bold } } }
步骤四:判断录入
得到用户的录入后,进行判断:如果用户录入的为-1,则需要提前退出循环;如果用户录入的答案错误,则提示“Error!”,并继续下一次答题;如果用户录入的答案正确,则提示“Correct!”,并计算用户的得分,然后继续下一次的答题。用户得分的规则是,每答对一题,得10分(满分为 100 分)。
代码如下所示:
import java.util.Scanner; public class AdditionTest { public static void main(String[] args) { System.out.println("将开始 10 次加法测试... "); Scanner scanner = new Scanner(System.in); //用于记载分数 int score = 0; //构建 10 次循环 for (int i=1;i<=10;i++) { //随机生成两个加数 int a = (int) (Math.random() * 100); int b = (int) (Math.random() * 100); int result = a + b; //输出需要计算的加法表达式 System.out.println("(" + i + "). " + a + " + " + b + " = ?"); System.out.print("请输入答案(输入-1退出): "); #cold_bold //读入结果 #cold_bold int answer = scanner.nextInt(); #cold_bold //判断对错 #cold_bold if(answer == -1){ #cold_bold break; #cold_bold }else if (answer != result) { #cold_bold System.out.println("Error!"); #cold_bold continue; #cold_bold } else { #cold_bold score += 10; #cold_bold System.out.println("Correct!"); #cold_bold } } } }
步骤五:输出结果
最后,需要将scanner对象关闭,并输出结果,代码如下所示:
import java.util.Scanner; public class AdditionTest { public static void main(String[] args) { System.out.println("将开始 10 次加法测试... "); Scanner scanner = new Scanner(System.in); //用于记载分数 int score = 0; //构建 10 次循环 for (int i=1;i<=10;i++) { //随机生成两个加数 int a = (int) (Math.random() * 100); int b = (int) (Math.random() * 100); int result = a + b; //输出需要计算的加法表达式 System.out.println("(" + i + "). " + a + " + " + b + " = ?"); System.out.print("请输入答案(输入-1退出): "); //读入结果 int answer = scanner.nextInt(); //判断对错 if(answer == -1){ break; }else if (answer != result) { System.out.println("Error!"); continue; } else { score += 10; System.out.println("Correct!"); } } #cold_bold scanner.close(); #cold_bold System.out.println("此次测验结束,你的分数是:" + score); } }
本案例的完整代码如下所示:
import java.util.Scanner; public class AdditionTest { public static void main(String[] args) { System.out.println("将开始 10 次加法测试... "); Scanner scanner = new Scanner(System.in); //用于记载分数 int score = 0; //构建 10 次循环 for (int i=1;i<=10;i++) { //随机生成两个加数 int a = (int) (Math.random() * 100); int b = (int) (Math.random() * 100); int result = a + b; //输出需要计算的加法表达式 System.out.println("(" + i + "). " + a + " + " + b + " = ?"); System.out.print("请输入答案(输入-1退出): "); //读入结果 int answer = scanner.nextInt(); //判断对错 if(answer == -1){ break; }else if (answer != result) { System.out.println("Error!"); continue; } else { score += 10; System.out.println("Correct!"); } } scanner.close(); System.out.println("此次测验结束,你的分数是:" + score); } }